最近用 Keyboard Maestro 寫在 Mac 上自動登入公司 VPN 的腳本,

不過偶爾遇到一些例外狀況要處理,

像今天是遇到 Wi-fi 網路被我手動關閉,導致腳本執行失敗...

因此要想個方法,來偵測 Wi-fi 的狀況,以及將 Wi-fi 打開~

 

在網路上找了一下,原來 Mac 內建的 networksetup 指令就能做到這些事了~

舉例來說,可以用 networksetup -listallnetworkservice 列出所有的網路類型:

testuser@localhost ~ $ networksetup -listallnetworkservices

An asterisk (*) denotes that a network service is disabled.
MT65xx Preloader
Ethernet
FireWire
Wi-Fi
Bluetooth PAN
Thunderbolt Bridge

 

可以看到有個網路類型是 "Wi-Fi",接著用 networksetup -getinfo 可以取得相關資訊,

像是目前的 IP address、Wi-Fi ID 等等~

如果是要偵測 Wi-Fi 有沒有成功連上網路的話,搜尋下面的輸出裡面,

有沒有 IP address 之類的字串加上一個合法的 IP 位址就行了:

testuser@localhost ~ $ networksetup -getinfo Wi-Fi

DHCP Configuration
IP address: 10.1.2.3
Subnet mask: 255.255.252.0
Router: 10.1.2.254
Client ID:
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none
Wi-Fi ID: 11:22:33:44:55:66

 

如果要操作 Wi-Fi 設備的話,得先知道設備的名稱,

這個設備的名稱在每台電腦上都有可能不一樣 (不像 "Wi-Fi" 這個網路類型是每台 Mac 都應該有的),

因此要用 networksetup -listallhardwareports 來列出所有的網路設備,

像我們可以從下面的輸出中,得知 Wi-Fi 的網卡設備是 en1:

testuser@localhost ~ $ networksetup -listallhardwareports

Hardware Port: Ethernet
Device: en0
Ethernet Address: 11:11:11:11:15:85

Hardware Port: FireWire
Device: fw0
Ethernet Address: 22:22:22:22:fe:6a:59:dc

Hardware Port: Wi-Fi
Device: en1
Ethernet Address: 33:33:33:33:aa:8e

Hardware Port: Bluetooth PAN
Device: en3
Ethernet Address: 44:44:44:44:aa:8f

Hardware Port: Thunderbolt 1
Device: en2
Ethernet Address: 55:55:55:55:9d:c0

Hardware Port: Thunderbolt Bridge
Device: bridge0
Ethernet Address: 66:66:66:66:9d:c0

VLAN Configurations
===================

 

接著用 networksetup -getairportpower 就能得知目前 Wi-Fi 設備是不是開啟的:

testuser@localhost ~ $ networksetup -getairportpower en1

Wi-Fi Power (en1): Off

 

用 networksetup -setairportpower 就能開關指定的 Wi-Fi 設備:

networksetup -setairportpower en1 on

 

用 networksetup -getairportpower 再看一次,果真 Wi-Fi 設備已經被打開囉:

testuser@localhost ~ $ networksetup -getairportpower en1

Wi-Fi Power (en1): On

 

參考資料:Managing WIFI connections using the Mac OSX terminal command line

 

文章標籤
創作者介紹

亂打一通的心情日記

ephrain 發表在 痞客邦 PIXNET 留言(0) 人氣()