macOSで接続中のBSSID(アクセスポイントのMACアドレス)をコマンドから調べる
接続中の Wi-Fi ルーターの MAC アドレスを Mojave/Catalina から確認したい
同じ名前の SSID(アクセスポイント名)が複数あるため、どのアクセスポイントに接続中かターミナルからアクセスポイントの MAC アドレス(BSSID)を調べたい。
option
キーを押しながら WiFi アイコンをクリックすると表示されるアレ。
ここ1年で作成/更新された Qiita 記事で「bssid
mac
macOS
wifi
取得
」でググっても出てこなかったので、自分のググラビリティとして。
TL;DR (今北産業)
-
airport
コマンドの-I
オプションを使う。 -
airport
コマンドにはパスが通ってないのでフルパスで指定するか、コマンドのエイリアスを作る。 - コマンドのフルパス:
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
alias airport='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport'
- 動作確認環境:macOS Mojave(OSX 10.14.4, 10.14.6), macOS Catalina(OSX 10.15.7)
TS; DR(詳細)
$ # 接続中のアクセスポイント名を調べる場合。でも欲しいのは MAC アドレス。
$ networksetup -GetAirportNetwork en0
Current Wi-Fi Network: aterm-xxxxxx-a
iPad/iPhone/Android などのモバイル端末は、通信が不安定だったり「明らかに速度が落ちた」と検知すると、同じアクセスポイント名の複数のアンテナがある場合は、強い電波の方に自動接続します。(その場合、同じ接続パスワード、同じ暗号タイプである必要があります)
厳密には、「アクセス実績のあるアクセスポイントで一番電波の強いもの」を選んでいるのですが、アクセスポイント一覧の優先順位にあわせて確認していくので、同じアクセスポイント名(で違うアンテナ)があった場合はそちらを優先するのです。
複数アクセスポイントを設置している場合、この仕組みを利用することで安定した Wi-Fi 接続につながります。特に工場やシェアオフィスなど、移動しながら端末を持ち歩く場合に効果を発揮します。
設定は以下の通りです。
- 同じアクセスポイント名
- 同じ接続パスワードとセキュリティレベル(AES など)
- 被らないチャンネル
🐒 注意点として、この方法には一長一短があります。動画や音楽などのストリーミングを視聴もしくは配信をしながら移動すると体感的に不安定な動作になります。他にも裏でコッソリとアップデートが行われていた場合などです。なぜなら、移動してアンテナが変わるとセッション情報も切れるため、アクセスポイントとクライアントがお互い送信・受信待ちになってしまうためです。
私の利用している環境では視聴中は移動しないので、この「アクセスポイント名の統一」設定をしていました。
しかし、どうも腑に落ちない動きがありました。複数台の NEC と Buffalo のアンテナが混在しているためか、相性なのか、強い方に繋がっていない体感があったのです。
そこで、どのアクセスポイントに繋がっているか知る(測定する)必要がありました。
アクセスポイント名が同じなので、本当に近くの(電波の強い方の)アクセスポイントに繋がっているのか確証が持てなかったのです。
その場合に強い味方になるのが、アクセスポイントの NIC の MAC アドレス(ネットワークカードの物理アドレス)です。
つまり、マシン自体が「まだまだ大丈夫」と期待するアクセスポイントに接続していない場合は、Wi-Fi のオン・オフで強制的に強い方に接続させたいのです。
また、期待するアクセスポイントに接続しているのに重い/遅い場合、大本のルーターに大量アクセスが来ていないかなどの切り分けにも助かります。
しかし、MAC アドレスを調べるためだけに別途アプリを入れるのもなぁと思っていたのですが、macOS の標準機能で確認する方法を探してみたところ、みつかりました。ただ、パスが長くて、まず覚えられないと思ったので、未来の自分のググラビリティのために記事にしました。
$ # 移動
$ cd /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources
$ # airport コマンドの確認
$ ls -l
total 248
-rw-r--r-- 1 root wheel 1497 3 5 14:27 Info.plist
-rwxr-xr-x 1 root wheel 293120 3 21 15:07 airport
-rw-r--r-- 1 root wheel 4955 9 28 2018 airportd.sb
-rw-r--r-- 1 root wheel 512 3 5 14:27 version.plist
$ # airport コマンドの実行
$ ./airport -I
agrCtlRSSI: -54
agrExtRSSI: 0
agrCtlNoise: -92
agrExtNoise: 0
state: running
op mode: station
lastTxRate: 702
maxRate: 867
lastAssocStatus: 0
802.11 auth: open
link auth: wpa2-psk
BSSID: aa:bb:cc:dd:ee:ff
SSID: aterm-xxxxxx-a
MCS: 8
channel: 36,80
$ # MACアドレスのみ抜き出す
$ ./airport -I | grep BSSID | awk '{print $2}'
aa:bb:cc:dd:ee:ff
参考文献
- 「How to determine the WiFi channel from Mac command line?」| コメント | SuperUser @ StackExchenge
- 「Macのコマンドラインで無線LANのアクセスポイントをスキャンをする」@ Qiita
- 「Mac の bash で現在の DNS サーバーなどのネットワーク設定を取得する」@ Qiita
- 「macOS Mojave の WiFi をコマンドからオン・オフする」@ Qiita
Author And Source
この問題について(macOSで接続中のBSSID(アクセスポイントのMACアドレス)をコマンドから調べる), 我々は、より多くの情報をここで見つけました https://qiita.com/KEINOS/items/dbee5a53caa124430b1f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .