如何以编程方式获取OSX网络服务的连接状态?
在OS X系统偏好设置中,当我点击'网络'时,我看到'以太网'的绿点,'AirPort'和'FireWire'的红点。这是因为我关闭了AirPort和FireWire,因为我通过以太网访问网络和Internet。如何以编程方式获取OSX网络服务的连接状态?
我需要以编程方式确定系统偏好设置中显示的这些网络服务中哪些具有绿色点,哪些具有红色点。对于以太网和FireWire,显示的状态为“连接”或“未连接”,对于AirPort,显示的状态为“开”或“关”。其他网络服务可能还有其他状态标签。
我已经选取了'/ Library/Preferences/SystemConfiguration'中的所有plist文件,特别是'preferences.plist'和'NetworkInterfaces.plist'。我可以在那里获得各种信息,例如位置集,网络服务订单,代理信息(这对我的任务也很重要),但是我找不到如何确定给定的网络服务是打开还是关闭 - 相当于显示绿色圆点。
我也试过使用系统配置框架,特别是SCNetworkConnectionGetStatus函数,但我得到的都是无效的连接状态。
有谁知道如何实际检索此连接状态信息?
谢谢。
控制面板中的绿色和红色点通常与OSX上的ifconfig
命令的输出相关。
通常它可以从电脑到电脑不同,en0
将是以太网端口和en1
机场。 (至少在我使用的所有Macbook优点)
它看起来像你可以使用ifconfig -m获取有关支持的媒体的信息。
$ ifconfig -m en0 en0: flags=8863 mtu 1500 ether (redacted) media: autoselect status: inactive supported media: media autoselect media 10baseT/UTP mediaopt half-duplex media 10baseT/UTP mediaopt full-duplex media 10baseT/UTP mediaopt full-duplex mediaopt hw-loopback media 10baseT/UTP mediaopt full-duplex mediaopt flow-control media 100baseTX mediaopt half-duplex media 100baseTX mediaopt full-duplex media 100baseTX mediaopt full-duplex mediaopt hw-loopback media 100baseTX mediaopt full-duplex mediaopt flow-control media 1000baseT mediaopt full-duplex media 1000baseT mediaopt full-duplex mediaopt hw-loopback media 1000baseT mediaopt full-duplex mediaopt flow-control media none
看到10xxbaseT通常是一个好兆头,它是以太网。
无线似乎没有报告任何支持的媒体。
ifconfig的手册页有很多信息,但可能有一些系统库用于以编程方式访问我不知道的信息,但这应该让您开始。