web-dev-qa-db-ja.com

NetworkManagerから範囲内のワイヤレスSSIDのリストをプログラムで取得する方法

私はUbuntu App Reviewボードに提出したい小さな小さなアプリを書いています。私がやりたいことの1つは、コンボボックスに検出されたワイヤレスSSIDの名前を表示することです。 PyGIアプリです。

できればPython AP​​Iを使用して、システムからそれらのSSIDを取得する方法を教えてくれる人はいますか? dbusからですか? NetworkManagerからですか?

6
David Planella

NetworkManagerのpygiバインディングからこれを簡単に行うことができます。

from gi.repository import NetworkManager, NMClient

nmc = NMClient.Client.new()
devs = nmc.get_devices()

for dev in devs:
    if dev.get_device_type() == NetworkManager.DeviceType.WIFI:
        for ap in dev.get_access_points():
            print ap.get_ssid()

またはDBusから直接、 http://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/python/show-bssids.py を参照してください

シェルでこれをすぐにスクリプト化したい場合は、 NetworkManagerにこれを依頼する簡単な方法は以下を使用することです:

nmcli dev wifi list

または、iwlist scan以上を使用します:iw dev wlan0 scan(または... scan dump)、 iwInstall iw パッケージ。

1つのオプションは、コマンドラインでiwlist scanを実行することですが、rootとして実行する必要があります

2
mhall119