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

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

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

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

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

参见手册 networksetup

获取所有的network service

实际当前使用的network service

对network service进行操作

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


首先要明白一点,不存在什么“当前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。

【热门文章】
【热门文章】