要获取关联的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 命令匹配输入结果中的模式并显示输出。当您直接在某个程序或批处理作业中使用结果时,这会很有用。
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 中运行良好。