我正在编写一个小型应用程序,想要提交给 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 扫描(或者... 扫描转储),安装后我爱 包裹。
答案2
一种选择是在命令行上运行iwlist scan
,但必须以以下方式运行根