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

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

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

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

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

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

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

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

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

1
networksetup -setairportpower 'Wi-Fi' off

显示结果为:

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

因此,也可以这样调用:

1
networksetup -setairportpower en0 off

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

1
networksetup -setairportpower en0 on

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

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

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

(全文完)

留言

2016-05-30
次访问