OS X 中使用命令行来管理网络

最近用 Alfred 写了一些 小工具 ,涉及到网络操作。

由于我的电脑 睡眠耗电 的问题,不得不在睡眠前关闭 Wi-Fi 网络。在 OS X 中,有这样一些命令与网络操作相关。

airport 是一个隐藏的命令,路径如下:

1/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

使用它可以做一些网络相关工作,例如使用 airport -I 可以获取当前WIFI的信息:

 1     agrCtlRSSI: -55
 2     agrExtRSSI: 0
 3    agrCtlNoise: -93
 4    agrExtNoise: 0
 5          state: running
 6        op mode: station 
 7     lastTxRate: 217
 8        maxRate: 217
 9lastAssocStatus: 0
10    802.11 auth: open
11      link auth: wpa2
12          BSSID: 0:8:2f:b1:00:99
13           SSID: Baina-WiFi
14            MCS: 23
15        channel: 161

使用 airport -z 可以断开当前的WIFI连接。就像我们按住 ALT 点击无线信号图标可以做的那样。

不幸的是,airport 是一个隐藏工具,按照 Apple 的尿性,我们并不知道什么时候它会消失。而且,一些操作必须使用 sudo 权限才可以处理,这不太方便。

在 OS X 中,使用 networksetup 工具是最方便的。例如,要关闭 Wi-Fi 网络,可以这样调用:

1networksetup -setairportpower 'Wi-Fi' off

显示结果为:

Wi-Fi is not a Wi-Fi interface. Turning on the only airport interface found: en0

因此,也可以这样调用:

1networksetup -setairportpower en0 off

开启 Wi-Fi 网络,则可以这样写:

1networksetup -setairportpower en0 on

使用 ifconfig 也能实现类似功能:

1# 关闭网络
2sudo ifconfig en0 down
3# 启动网络
4sudo ifconfig en0 up

但同样的,ifconfig 需要 sudo 权限,因此没有 networksetup 那么方便。

(全文完)