如何在 Mac OSX 中获取默认网关
我需要检索 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以尝试使用:
它与 GNU/Linux 的
route -n
(甚至ip route show
)不同,但对于检查默认路由信息很有用。此外,您还可以检查包到达特定主机的路线。例如,
输出将类似于:
恕我直言
netstat -nr
就是您所需要的。甚至 MacOSX 的网络实用程序应用程序 (*) 也使用 netstat 的输出来显示路由信息。(*) 您可以使用
open /Applications/Utilities/Network 启动网络实用程序\ 实用程序.app
You can try with:
It is not the same as GNU/Linux's
route -n
(or evenip 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.
The output would be similar to:
IMHO
netstat -nr
is what you need. Even MacOSX's Network utility app(*) uses the output of netstat to show routing information.(*) You can start Network utility with
open /Applications/Utilities/Network\ Utility.app
要获取关联的 IP 地址列表,您可以使用 netstat 命令。
这会给出一个很长的 IP 地址列表,并且不容易找到所需的字段。示例结果如下:
第一行是网关的ip地址;第一列有默认值。
要仅显示结果中选定的行,我们可以使用 grep 命令和 netstat
该命令过滤并显示具有默认值的结果行。在这种情况下,您可以看到如下结果:
如果您只想查找网关的 IP 地址而不是其他内容,您可以使用 awk 进一步过滤结果。 awk 命令匹配输入结果中的模式并显示输出。当您直接在某些程序或批处理作业中使用结果时,这可能很有用。
awk 命令指示匹配并打印文本中结果的第二列。最终结果如下所示:
在这种情况下,netstat 显示所有结果,grep 仅选择其中包含“default”的行,awk 进一步匹配模式以显示文本中的第二列。
您可以类似地使用route -n get default命令来获取所需的结果。完整的命令是
这些命令在 linux 以及 unix 系统和 MAC OS 中运行良好。
For getting the list of ip addresses associated, you can use netstat command
This gives a long list of ip addresses and it is not easy to find the required field. The sample result is as following:
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
This command filters and displays those lines of result having default. In this case, you can see result like following:
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.
The awk command tells to match and print the second column of the result in the text. The final result thus looks like this:
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
These commands work well in linux as well as unix systems and MAC OS.
不需要 grep 实用程序。 Awk 可以做到这一切:
请注意,如果您正在运行 Parallels(或 VPN,或两者)之类的东西,您可能会看到两个或更多默认路由条目 - 如果您也使用上面的“grep”建议,这也是事实。
并
设置一个变量(_default)以供进一步使用(假设只有一个“默认”条目).....
在多个默认路由的情况下使用:
这些示例在 Mavericks Terminal.app 中进行了测试,并且仅特定于 OSX。例如,其他 *nix 版本经常使用“eth”来表示以太网/无线连接,而不是“en”。
这也仅使用 ksh 进行了测试。其他 shell 可能需要稍微不同的语法。
The grep utility is not needed. Awk can do it all:
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.
and
To set a variable (_default) for further use (assuming only one entry for 'default') .....
In the case of multiple default routes use:
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.
我会使用类似的东西......
I would use something along these lines...
使用系统偏好设置:
第 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.