みかづきブログ・カスタム

基本的にはちょちょいのほいです。

Macが接続しているWiFiのSSIDをコードから取得する 📡

WiFi

Macが接続しているWiFiのSSIDなどステータスバーを見れば一目瞭然なのですが、今回はSSIDをコードから取得する方法を調査しました。




ターミナルから調べる

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --getinfo

という感じで、airportコマンドで調べられます。

     agrCtlRSSI: -41
     agrExtRSSI: 0
    agrCtlNoise: -92
    agrExtNoise: 0
          state: running
        op mode: station 
     lastTxRate: 1170
        maxRate: 1300
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: XXXXXX
           SSID: LANLANLAN
            MCS: 9
        channel: 36,80

出力のSSIDの部分、上記の例だとLANLANLANというLANに繋いでいることがわかります。

SSIDだけをトリムしたかったら、

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --getinfo | grep " SSID" | tr -d " "

で、

SSID: LANLANLAN

となります。


Node.jsで調べる

さらに調査を進めると、これをいい感じにラップしてくれているnpmを見つけました。こちらを使った方が楽に実装できそうです。

www.npmjs.com

const wifi = require('node-wifi');

wifi.init({
  iface: null
});

wifi.getCurrentConnections((error, currentConnections) => {
  if (error) {
    console.log(error);
  } else {
    console.log(currentConnections);
  }
});

こんな感じのコードを書けば、

[
  {
    signal_level: -44,
    quality: 112,
    security: 'wpa2-psk',
    security_flags: [],
    mac: 'XXXXXX',
    bssid: 'XXXXXX',
    ssid: 'LANLANLAN',
    channel: 36,
    frequency: 5180
  }
]

こんな感じで取得できます。使いやすいです。

該当部分のコードを見ると、やはり、airportをつかっています。

github.com

試してませんが、WindowsやLinuxでも動作するようです。便利です。