如何以编程方式从 NetworkManager 获取范围内的无线 SSID 列表

如何以编程方式从 NetworkManager 获取范围内的无线 SSID 列表

我正在编写一个小型应用程序,想要提交给 Ubuntu 应用程序评审委员会,我想做的一件事是让它在组合框中显示检测到的无线 SSID 的名称。这是一个 PyGI 应用程序。

有谁能指点一下如何从系统获取这些 SSID,最好是通过 Python API?从 dbus?从 NetworkManager?

答案1

您可以通过 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

如果您倾向于在 shell 中快速编写此脚本,则向 NetworkManager 请求此脚本的一个简单方法是使用:

nmcli dev wifi list

或者使用iwlist 扫描, 或更好:iw dev wlan0 扫描(或者... 扫描转储),安装后我爱 安装 iw包裹。

答案2

一种选择是在命令行上运行iwlist scan,但必须以以下方式运行

相关内容