万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Mac Wifi 再接続 fish

    「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}'

    でいいじゃん。

    ワンライナー完成系(いまのSSIDに再接続)

    networksetup -setairportnetwork en0 (airport -I | /usr/bin/grep -ie '^\s*ssid' | awk '{print $2}')