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

mc_zone
  • 282

如题,在终端中使用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。

回复
阅读 12k
2 个回答
✓ 已被采纳

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏