Mac OS X 终端下怎么获取当前使用的network service? 例如当前使用的连接服务名是「Wi-Fi」,终端中怎么获取?

发布于 2022-08-29 20:12:07 字数 913 浏览 25 评论 0

如题,在终端中使用networksetup命令可以对网络服务(network service)进行设置,例如更改DNS等。

手册中有几个选项例如-listnetworkserviceorder,-listallnetworkservices可以列出现在所有的network service信息,但是看了一遍没有找到获取当前正在使用的service的方法。

例如当前使用的服务名为「Wi-Fi」,通过什么命令能获取到?

参见手册 networksetup

获取所有的network service
获取所有的network service

实际当前使用的network service
实际当前使用的network service

对network service进行操作
对network service进行操作

现在就是不知道怎么获取当前使用的service。

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

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

发布评论

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

评论(2

流心雨 2022-09-05 20:12:07

首先要明白一点,不存在什么“当前service”,多个service可以同时是活跃的,用于连接不同的网络,IP包会根据路由表找到合适的interface。
下面说你的问题,networksetup -listnetworkserviceorder可以列出每个service对应的interface名字,ifconfig可以列出每个名字对应的IP地址以及是否活跃/连接等状态,netstat -r可以列出路由表。
有了这些信息,你要做的事情就可以解决了。

骄傲 2022-09-05 20:12:07

Macosx的Preformance并不是封装networksetup命令实现的。所以命令并不能完全达到你要求的结果。

如果是用shell,遍历service,简单的,grep判断-getinfo输出是否带有IP address判断,比如
networksetup getinfo "WI-FI"|grep -c "IP address:\W[1-9]",如果稍微认真点,就获取ip和route,Ping一下。

要是用代码实现,你可以参考下CFNetServices。

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