コマンドラインからMac OS XのWi-Fiを無効化する

以下のコマンドで無効化できます。offの部分をonにすると有効化もできます。

networksetup -setairportpower Wi-Fi off

networksetup

Macでシステム環境設定のネットワーク周りの設定をCUIから操作する場合は、networksetupが利用できます。/System/Library/PreferencePanes/Network.prefPane という環境設定パネルがGUIとして提供されているのに対して、networksetupがCUI版として提供されている感じです。man networksetup で詳しい使い方の説明が表示されますが、設定項目が多い分manの分量も多くなっているので、簡単に使い方の例を説明しておきます。

networksetup -listnetworkserviceorder

networksetup -listnetworkserviceorder を利用すると、現在マシンが認識しているネットワークサービスの一覧を表示できます。「ネットワークサービス」というのは、システム環境設定のネットワークの項目で左側に表示される個々の項目のことを指していると解釈できます。例えば Wi-Fi というネットワークサービスがあります。ネットワークサービスは「Wi-Fi」や「Display Ethernet」という名前によって一意に特定され、networksetupにはこれを引数にして設定を与える操作が多数存在します。

$ networksetup -listnetworkserviceorder
An asterisk (*) denotes that a network service is disabled.
(1) Bluetooth DUN
(Hardware Port: Bluetooth DUN, Device: Bluetooth-Modem)

(2) Display Ethernet
(Hardware Port: Display Ethernet, Device: en4)

(3) Display FireWire
(Hardware Port: Display FireWire, Device: fw0)

(4) Wi-Fi
(Hardware Port: Wi-Fi, Device: en0)

(5) iPhone USB
(Hardware Port: iPhone USB, Device: en5)

(6) NAD11
(Hardware Port: NAD11, Device: en6)

(7) Bluetooth PAN
(Hardware Port: Bluetooth PAN, Device: en3)

(8) Thunderbolt Bridge
(Hardware Port: Thunderbolt Bridge, Device: bridge0)

image

networksetup -getinfo NETWORKSERVICE

特定のネットワークサービスについて、詳細な情報を表示することもできます。これはWi-Fiの例。

$ networksetup -getinfo Wi-Fi
DHCP Configuration
IP address: 192.168.3.10
Subnet mask: 255.255.255.0
Router: 192.168.3.1
Client ID:
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none
Wi-Fi ID: 3c:15:c2:e8:71:58

systemsetup

networksetupの他に、systemsetupというコマンドもあります。例えば、ディスプレイがスリープするまでの時間を表示させる場合は systemsetup -getdisplaysleep が利用できます。systemsetupの利用にはシステム管理者の権限が必要になるので、sudoを付けています。例えば、社用Macbookのセキュリティポリシーとしてスリープまでの時間を短めに設定したいとき、その工程を自動化するのに使えます。

$ sudo systemsetup -getdisplaysleep
Display Sleep: after 5 minutes

おわり

以上です。Macの環境構築を自動化する過程で見つけたので、そういう用途にも使えるかもしれません。