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

发布于 2024-11-25 16:01:21 字数 270 浏览 4 评论 0原文

我需要检索 Mac 计算机上的默认网关。我知道在 Linux 中,route -n 会给出一个输出,我可以从中轻松检索此信息。然而,这在 Mac OSX(Snow Leopard) 中不起作用。

我也尝试过 netstat -nr | grep 'default',但我希望得到像 Linux/Unix 中 route -n 生成的更清晰的输出。 netstat -nr 列出所有接口及其默认网关。

任何类型的建议或正确方向的提示将不胜感激。

I need to retrieve the default gateway on a Mac machine. I know that in Linux route -n will give an output from which I can easily retrieve this information. However this is not working in Mac OSX(Snow Leopard).

I also tried netstat -nr | grep 'default', but I was hoping for a cleaner output like that produced by route -n in Linux/Unix. netstat -nr lists all the interfaces and the default gateway for them.

Any kind of suggestion or a hint in the right direction will be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

被你宠の有点坏 2024-12-02 16:01:21

您可以尝试使用:

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 启动网络实用程序\ 实用程序.app

You can try with:

route -n get default

It is not the same as GNU/Linux's route -n (or even ip route show) but is useful for checking the default route information.
Also, you can check the route that packages will take to a particular host. E.g.

route -n get www.yahoo.com

The output would be similar to:

   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

IMHO netstat -nr is what you need. Even MacOSX's Network utility app(*) uses the output of netstat to show routing information.
Network utility screenshot displaying routing table information

(*) You can start Network utility with open /Applications/Utilities/Network\ Utility.app

紫轩蝶泪 2024-12-02 16:01:21

要获取关联的 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 中运行良好。

For getting the list of ip addresses associated, you can use netstat command

netstat -rn 

This gives a long list of ip addresses and it is not easy to find the required field. The sample result is as following:

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.......

The ip address of gateway is in the first line; one with default at its first column.

To display only the selected lines of result, we can use grep command along with netstat

netstat -rn | grep 'default'

This command filters and displays those lines of result having default. In this case, you can see result like following:

default            192.168.195.1      UGSc           14        0     en2

If you are interested in finding only the ip address of gateway and nothing else you can further filter the result using awk. The awk command matches pattern in the input result and displays the output. This can be useful when you are using your result directly in some program or batch job.

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

The awk command tells to match and print the second column of the result in the text. The final result thus looks like this:

192.168.195.1

In this case, netstat displays all result, grep only selects the line with 'default' in it, and awk further matches the pattern to display the second column in the text.

You can similarly use route -n get default command to get the required result. The full command is

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

These commands work well in linux as well as unix systems and MAC OS.

风月客 2024-12-02 16:01:21

不需要 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

这些示例在 Mavericks Terminal.app 中进行了测试,并且仅特定于 OSX。例如,其他 *nix 版本经常使用“eth”来表示以太网/无线连接,而不是“en”。
这也仅使用 ksh 进行了测试。其他 shell 可能需要稍微不同的语法。

The grep utility is not needed. Awk can do it all:

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

Note that if you have something like Parallels (or a VPN, or both) running, you may see two or more default routing entries - it will be true if you use the 'grep' suggestion above, too.

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

and

    netstat -rn | awk '/default/ {print $2}'                             
      utun1
      192.168.128.1
      link#12

To set a variable (_default) for further use (assuming only one entry for 'default') .....

    _default=$( netstat -rn inet | awk '/default/ {print $2}' ) # I prefer $( ... ) over back-ticks

In the case of multiple default routes use:

    netstat -rn | awk '/default/ {if ( index($6, "en") > 0 ){print $2} }'
      192.168.128.1

These examples tested in Mavericks Terminal.app and are specific to OSX only. For example, other *nix versions frequently use 'eth' for ethernet/wireless connections, not 'en'.
This is also only tested with ksh. Other shells may need a slightly different syntax.

别念他 2024-12-02 16:01:21

我会使用类似的东西......

 netstat -rn | grep "default" | awk '{print $2}'

I would use something along these lines...

 netstat -rn | grep "default" | awk '{print $2}'
时间海 2024-12-02 16:01:21

使用系统偏好设置:

第 1 步:单击 Apple 图标(位于屏幕左上角)并选择系统偏好设置。

步骤 2:单击网络。

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

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

Using System Preferences:

Step 1: Click the Apple icon (at the top left of the screen) and select System Preferences.

Step 2: Click Network.

Step 3: Select your network connection and then click Advanced.

Step 4: Select the TCP/IP tab and find your gateway IP address listed next to Router.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文