如何在Mac OSX中获取默认网关


119

我需要在Mac机器上检索默认网关。我知道在Linux中,路由-n将给出输出,我可以从中轻松检索此信息。但是,这在Mac OSX(雪豹)中不起作用。

我也尝试过netstat -nr | grep 'default',但是我希望获得更干净的输出,例如route -nLinux / Unix 中产生的输出。netstat -nr列出所有接口和它们的默认网关。

任何朝正确方向提出的建议或暗示将不胜感激。


3
迁移到超级用户?
JMD 2015年

3
仅供参考,您可以选择+单击状态栏上的WiFi图标。这显示了其他信息,包括网关。
PetrÚjezdský18年

Answers:


189

您可以尝试:

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的Network Utility应用程序(*)都使用netstat的输出来显示路由信息。 网络实用程序屏幕快照,显示路由表信息

我希望这有帮助 :)

(*)您可以使用 open /Applications/Utilities/Network\ Utility.app


谢谢。当时代华纳的调制解调器决定它想要我的路由器以前拥有的IP以及ifconfig谎言网关时,您刚刚在新房子里节省了我几个小时。
克里斯·多吉特

38

要获取关联的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仅选择其中带有“默认”的行,而awk进一步匹配该模式以在文本中显示第二列。

您可以类似地使用route -n get default命令来获得所需的结果。完整的命令是

route -n get default | grep 'gateway' | awk '{print $2}'

这些命令在linux以及unix系统和MAC OS上都可以正常工作。


8

不需要grep实用程序。Awk可以做到:

    netstat -rn | awk '/default/ {print $2}'
      192.168.128.1

请注意,如果您正在运行类似Parallels(或VPN,或同时运行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进行测试。其他外壳可能需要稍微不同的语法。



0

使用系统偏好设置:

步骤1:单击Apple图标(位于屏幕左上方),然后选择系统偏好设置。

步骤2:点击Network(网络)。

步骤3:选择您的网络连接,然后单击Advanced(高级)。

步骤4:选择TCP / IP选项卡,然后找到路由器旁边列出的网关IP地址。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.