我需要在Mac機器上獲取默認網關。我知道在Linux路由中-n會給出一個輸出,我可以從中輕鬆檢索到這些信息。但是,這不適用於Mac OSX(Snow Leopard)。如何在Mac OSX中獲取默認網關
我也試過netstat -nr | grep 'default'
,但是我希望在Linux/Unix中有一個像route -n
那樣的更清晰的輸出。 netstat -nr
列出了它們的所有接口和默認網關。
任何類型的建議或提示正確的方向將不勝感激。
我需要在Mac機器上獲取默認網關。我知道在Linux路由中-n會給出一個輸出,我可以從中輕鬆檢索到這些信息。但是,這不適用於Mac OSX(Snow Leopard)。如何在Mac OSX中獲取默認網關
我也試過netstat -nr | grep 'default'
,但是我希望在Linux/Unix中有一個像route -n
那樣的更清晰的輸出。 netstat -nr
列出了它們的所有接口和默認網關。
任何類型的建議或提示正確的方向將不勝感激。
你可以嘗試:
route -n get default
這是不一樣的GNU/Linux的route -n
(甚至ip route show
),但對於檢查默認路由信息是有用的。 此外,您可以檢查包裹將要送往特定主機的路線。例如。
route -n get www.yahoo.com
輸出將類似於:
route to: 98.137.149.56
destination: default
mask: 128.0.0.0
gateway: 5.5.0.1
interface: tun0
flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
恕我直言netstat -nr
是你所需要的。即使MacOSX的網絡實用程序應用程序(*)也使用netstat的輸出來顯示路由信息。
我希望這有助於:)
(*)您可以啓動網絡實用程序open /Applications/Utilities/Network\ Utility.app
謝謝。當時代華納的調制解調器決定要我的路由器曾經擁有的IP,並且ifconfig關於網關時,你剛剛在新房子裏爲我節省了幾個小時。 –
不客氣@ChrisDoggett – Humber
我會用這些方針的東西...
netstat -rn | grep "default" | awk '{print $2}'
我們如何在Objective-C編程中實現這一點。有沒有這個框架 –
用於獲取可以使用netstat命令
netstat -rn
這給出了一個很長的IP地址列表,並不容易找到所需的字段。樣本結果如下:
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.195.1 UGSc 17 0 en2
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 254107 lo0
169.254 link#7 UCS 0 0 en2
192.168.195 link#7 UCS 3 0 en2
192.168.195.1 0:27:22:67:35:ee UHLWIi 22 397 en2 1193
192.168.195.5 127.0.0.1 UHS 0 0 lo0
More result is truncated.......
網關的ip地址在第一行;第一列有默認值。
要只顯示結果的選擇線,可以隨着netstat的
netstat -rn | grep 'default'
使用的grep命令該命令過濾器和顯示具有默認結果的那些行。在這種情況下,你可以看到類似結果如下:
default 192.168.195.1 UGSc 14 0 en2
如果你有興趣在尋找唯一通道,沒有其他的IP地址,您可以進一步篩選使用AWK結果。 awk命令匹配輸入結果中的模式並顯示輸出。當您直接在某些程序或批處理作業中使用結果時,這會很有用。
netstat -rn | grep 'default' | awk '{print $2}'
awk命令告訴給匹配,並在文本打印結果的第二列。因此,最後的結果是這樣的:
192.168.195.1
在這種情況下,netstat的顯示所有結果,grep的僅選擇與在它的「默認」的路線,和awk進一步顯示在文本中第二列中的模式匹配。
您可以同樣使用route -n獲取默認命令來獲得所需的結果。完整的命令是
route -n get default | grep 'gateway' | awk '{print $2}'
這些命令在Linux以及unix系統和MAC OS中都能很好地工作。
不需要grep實用程序。 awk中能做到這一切:
netstat -rn | awk '/default/ {print $2}'
192.168.128.1
請注意,如果您有類似的Parallels(或VPN,或兩者)運行時,您可能會看到兩個或更多的默認路由條目 - 如果你使用它會真「 grep'的建議也是如此。
netstat -rn | awk '/default/ {print $2}'
192.168.128.1
link#12
和
netstat -rn | awk '/default/ {print $2}'
utun1
192.168.128.1
link#12
要設置用於進一步使用的變量(_default)(假設只有一個 '默認' 的條目).....
_default=$(netstat -rn inet | awk '/default/ {print $2}') # I prefer $(...) over back-ticks
在這種情況下多條默認路線使用:
netstat -rn | awk '/default/ {if (index($6, "en") > 0){print $2} }'
192.168.128.1
這些實例es在Mavericks Terminal.app中測試,僅針對OSX。例如,其他* nix版本經常使用'eth'進行以太網/無線連接,而不是'en'。 這也只能用ksh進行測試。其他shell可能需要稍微不同的語法。
遷移到超級用戶? – JMD