networksetup コマンド
mac には networksetup コマンドという、ネットワークでアレコレするためのコマンドが用意されている。
コマンドでアレコレできるけど、だんだんめんどくさくなって、Xcode立ち上げてAPI叩いちゃうんだけどさ。
networksetup コマンドの気持ちを理解してあげることにした。
デバイス(en0) なのか 名前(Wi-Fi) なのか
たとえば、SSIDにつなぐときは次のようにする。
sudo networksetup -setairportnetwork en0 0000docomo shared_key
たとえば、DNSを上書きするには次のようにする
networksetup -setdnsservers Wi-Fi 8.8.8.8
ヘルプを見ると書いてある。
networksetup -setairportpower <device name> <on off> networksetup -setdnsservers <networkservice> <dns1> [dns2] [...]
ヘルプを見れば書いてあるんだけど、いつもどっちなのか見失う。
<device name>
が en0 のようなデバイス名
<networkservice>
がネットワーク名
確認するには
networksetup -listallhardwareports
実行すると、次のようになる。
Hardware Port: Wi-Fi Device: en0 Ethernet Address: 60:03:xxxxxxxxxx
ここの出力から
<networkservice>
と Hardware Port
が対応し、<device name>
と Device
が対応してることがわかる。
無線LANのことは airpot と呼ぶ
無線LANのことは歴史的背景から airport と呼ぶ。Wi-Fiなどのなまえは使わない。
なので無線LAN関連の設定コマンドを見るときは grep で airport してあげればいい。
takuya@my_command$ networksetup -setdnsservers | grep airport networksetup -getairportnetwork <device name> networksetup -setairportnetwork <device name> <network> [password] networksetup -getairportpower <device name> networksetup -setairportpower <device name> <on off>
プロキシ関連の設定を見たければ
同じように grep で見てあげれば、使い方が出てくる。
takuya@my_command$ networksetup | \grep -P "(?<=networksetup ).+proxy.+" Usage: networksetup -getwebproxy <networkservice> Usage: networksetup -setwebproxy <networkservice> <domain> <port number> <authenticated> <username> <password> Usage: networksetup -setwebproxystate <networkservice> <on off> Usage: networksetup -getsecurewebproxy <networkservice> Usage: networksetup -setsecurewebproxy <networkservice> <domain> <port number> <authenticated> <username> <password> Usage: networksetup -setsecurewebproxystate <networkservice> <on off> (略 Usage: networksetup -setautoproxyurl <networkservice> <url> Usage: networksetup -getautoproxyurl <networkservice> Usage: networksetup -setautoproxystate <networkservice> <on off>
networksetup でできないこと
たとえば、MACアドレスを変更したり、ルーティング・テーブルを変更したりといったことはできない。
man を見ると、次のように書いてある。
NETWORKSETUP(8) BSD System Manager's Manual NETWORKSETUP(8) NAME networksetup -- configuration tool for network settings in System Preferences.
man には次の通り、 network settings in System Preferences. つまり、システム環境設定でできることは全てできるってことですね。
6to4 とかあったんですね。。
すべてのオプションはこれ。。。
おおいなぁ。
takuya@my_command$ networksetup -addDeviceToBond -duplicatenetworkservice -getinfo -listVLANs -removepreferredwirelessnetwork -setmanualwithdhcprouter -setv4off -addpreferredwirelessnetworkatindex -enableloginprofile -getmacaddress -listallhardwareports -renamenetworkservice -setmedia -setv6LinkLocal -connectpppoeservice -enablesystemprofile -getmedia -listallnetworkservices -set6to4automatic -setnetworkserviceenabled -setv6additionalroutes -create6to4service -enableuserprofile -getnetworkserviceenabled -listalluserprofiles -set6to4manual -setpassiveftp -setv6automatic -createBond -export8021xLoginProfiles -getpassiveftp -listdevicesthatsupportVLAN -setMTU -setpppoeaccountname -setv6manual -createVLAN -export8021xProfiles -getproxyautodiscovery -listlocations -setadditionalroutes -setpppoepassword -setv6off -createlocation -export8021xSystemProfile -getproxybypassdomains -listloginprofiles -setairportnetwork -setproxyautodiscovery -setwebproxy -createnetworkservice -export8021xUserProfiles -getsearchdomains -listnetworkserviceorder -setairportpower -setproxybypassdomains -setwebproxystate -createpppoeservice -getMTU -getsecurewebproxy -listpppoeservices -setbootp -setsearchdomains -showBondStatus -deleteBond -getadditionalroutes -getsocksfirewallproxy -listpreferredwirelessnetworks -setcomputername -setsecurewebproxy -showpppoestatus -deleteVLAN -getairportnetwork -getstreamingproxy -listvalidMTUrange -setdhcp -setsecurewebproxystate -switchtolocation -deletelocation -getairportpower -getv6additionalroutes -listvalidmedia -setdnsservers -setsocksfirewallproxy -version -deleteloginprofile -getcomputername -getwebproxy -ordernetworkservices -setftpproxy -setsocksfirewallproxystate -deletepppoeservice -getcurrentlocation -help -printcommands -setftpproxystate -setstreamingproxy -deleteuserprofile -getdnsservers -import8021xProfiles -removeDeviceFromBond -setgopherproxy -setstreamingproxystate -detectnewhardware -getftpproxy -isBondSupported -removeallpreferredwirelessnetworks -setgopherproxystate -settlsidentityonsystemprofile -disconnectpppoeservice -getgopherproxy -listBonds -removenetworkservice -setmanual -settlsidentityonuserprofile
参考資料
man networksetup