「Wi2」を使っているが、結構繋がらなくなる。
まずairportコマンドのエイリアス作っておく。
alias "airport=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport"
通常の復帰手順は以下の2通りで再接続できる。
手順1
一旦右上のWifiアイコンにて、WifiをOff -> WifiをOn -> 勝手に別のWifiにつながるので、「Wi2」にして再接続。
手順2
右上のWifiを一旦別の例えば「Wi2 Premium」に切り替え -> 「Wi2」にして再接続。
手順1はOnに復帰するのに時間が取られる。
手順2にてやってるがかなり手間・・・。
コマンドラインでないか探したらここがいい。
http://takuya-1st.hatenablog.jp/entry/2015/12/27/013922
手順1をコマンド化したもの
networksetup -setairportpower en0 off
networksetup -setairportpower en0 on
networksetup -setairportnetwork en0 Wi2
on/offにはsetairportpower
(セット エアポート パワー)で、
SSIDのときはsetairportnetwork
(セット エアポート ネットワーク)と微妙に違うので注意。
CHANNELは「Wi2」も「Wi2 Premium」もおなじチャンネル。
手順2をコマンド化したもの
networksetup -setairportnetwork en0 Wi2premium
networksetup -setairportnetwork en0 Wi2
これで気がついたのが、一旦切り替えなくてそのまま現在と同じSSID指定でいけるっていうこと
networksetup -setairportnetwork en0 Wi2
でいいってこと。
Wi2じゃない人は
networksetup -setairportnetwork en0 自分のSSID
みたいにやるんだけど、現在のSSIDを指定してやりたいと思う。
しかし、今の接続のものをそのまま指定してやればいい。
僕はfishシェル使ってるので先ほどの「mac osx で無線LANをオンオフと指定SSIDに接続するコマンド」の記事のサイトのコマンドを拝借して、
現在のSSIDの確認はこれでいけるので、
airport -I | /usr/bin/grep -ie '^\s*ssid' | cut -d ":" -f 2
ワンライナーで今のSSIDを確認してそれで再接続をやるには
networksetup -setairportnetwork en0 `(airport -I | /usr/bin/grep -ie '^\s*ssid' | cut -d ":" -f 2)`
のはずだが・・・。
Could not find network Wi2.
って・・・。
最後に「.」がつく?networkとWi2の間のスペースが2つなのもきになる。
networksetup -setairportnetwork en0 `(airport -I | /usr/bin/grep -ie '^\s*ssid' | cut -d ":" -f 2)`
Could not find network ` Wi2`.
と、Wi2
とかえったのでやはり半角スペースが余計に1つついてるようだ。「.」はただのメッセージの一部。
半角スペースを入れてはダメなのね。
そのくせ、以下のように2ついれても動くのは納得いかないけど()
での返り値は違う扱いかな?
networksetup -setairportnetwork en0 Wi2
trimしようと探したら、
Bash: How to trim whitespace before using cut - Stack Overflow
awk
か。
airport -I | /usr/bin/grep -ie '^\s*ssid'
これなら、
SSID: Wi2
って、awk
でプリントしたいのは:
で区切られた2番目。つまり?
airport -I | /usr/bin/grep -ie '^\s*ssid' | awk '{print $2}'
でいいじゃん。
networksetup -setairportnetwork en0 (airport -I | /usr/bin/grep -ie '^\s*ssid' | awk '{print $2}')