我需要在Mac机器上检索默认网关。我知道在Linux中,-n将给出一个输出,我可以从中轻松检索到这些信息。但是这在Mac OSX(Snow Leopard)中不起作用。
我也试过了netstat -nr | grep 'default'
,但我希望得到一个更清晰的输出,就像Linux / Unix中由route -n
生成的那样。 netstat -nr
列出了所有接口和默认网关。
任何形式的建议或暗示都将受到赞赏。
答案 0 :(得分:178)
您可以尝试:
route -n get default
它与GNU / Linux的route -n
(甚至ip route show
)不同,但对于检查默认路由信息很有用。
此外,您还可以检查程序包将路由到特定主机的路由。 E.g。
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
答案 1 :(得分:35)
要获取关联的IP地址列表,您可以使用 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地址在第一行;一个在第一列有默认值。
要仅显示所选的结果行,我们可以使用 grep 命令以及 netstat
netstat -rn | grep 'default'
此命令过滤并显示具有默认值的结果行。在这种情况下,您可以看到如下结果:
default 192.168.195.1 UGSc 14 0 en2
如果您只想找到网关的IP地址而没有其他任何内容,您可以使用 awk 进一步过滤结果。 awk命令匹配输入结果中的pattern并显示输出。当您在某个程序或批处理作业中直接使用结果时,这非常有用。
netstat -rn | grep 'default' | awk '{print $2}'
awk命令告诉匹配并打印文本中结果的第二列。因此最终结果如下:
192.168.195.1
在这种情况下,netstat显示所有结果,grep只选择其中包含'default'的行,awk进一步匹配模式以显示文本中的第二列。
您可以类似地使用route -n get default命令来获取所需的结果。完整的命令是
route -n get default | grep 'gateway' | awk '{print $2}'
这些命令在linux以及unix系统和MAC OS中运行良好。
答案 2 :(得分:7)
不需要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').....
_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
这些示例在Mavericks Terminal.app中进行了测试,仅针对OSX。例如,其他* nix版本经常使用'eth'进行以太网/无线连接,而不是'en'。 这也只是用ksh测试的。其他shell可能需要稍微不同的语法。
答案 3 :(得分:2)
我会沿着这些方向使用某些东西......
netstat -rn | grep "default" | awk '{print $2}'
答案 4 :(得分:0)
使用系统偏好设置:
步骤1:单击Apple图标(位于屏幕左上方),然后选择系统偏好设置。
第2步:点击网络。
第3步:选择您的网络连接,然后单击“高级”。
第4步:选择“ TCP / IP”标签,然后找到路由器旁边列出的网关IP地址。