2013年9月13日金曜日

Pythonで無線LANのSSIDをスキャン

Raspberry Pi で、無線LANアダプタが認識しているSSIDを調べる必要が出てきたので。

まずはシステムコマンドの確認から。wlan0 について調べる場合は、

$ sudo iwlist wlan0 scan | grep 'ESSID:".\+"'
で一覧が取れます。grep のあとについてる正規表現でESSIDが空になっている行を弾いています。このコマンドで取れる応答は、
    ESSID:"ssid1"
    ESSID:"ssid2"
    ...
のようになっています。これをpythonで受け取り、SSIDだけ抜き出してリストにします。
#!/usr/bin/python3
import subprocess

stdout = subprocess.check_output("iwlist wlan0 scan | grep 'ESSID:\".\+\"',
                                 shell=True)
ssid_list = [line.lstrip('ESSID:').strip('"') for line in stdout.split()]
以上。