您如何真正使用 dbus 从 NetworkManager 获取可见 SSID 列表?

How do you really use dbus to obtain the list of visible SSIDs from NetworkManager?

根据例12 here我应该可以用

dbus-send --system --print-reply --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Devices/4 org.freedesktop.NetworkManager.Device.Wireless.GetAllAccessPoints

发现所有可用的无线接入点,因为 /org/freedesktop/NetworkManager/Devices/4 是我的无线适配器。但是,return 的结果似乎不同于命令行等效的

nmcli device wifi list

其中 return 还有更多 SSID。在工作中尝试上述方法时,我只能通过 dbus-send 获得一个 SSID。在家里,我第一次 运行 dbus-send 命令它 returned 一个包含四个访问点的数组,与 return 由 nmcli.我再次 运行 相同的 dbus-send 命令,这次它生成了一个只有一个接入点的列表,就像在工作中一样。

第二天在家里,我尝试了几次 dbus-send 命令,但它只列出了一个接入点。然后我再次 运行 nmcli 命令,它列出了五个接入点。之后,dbus-send 命令也列出了五个接入点。似乎 nmcli 命令比 dbus-send 命令更能发现访问点,但一旦这样做,dbus-send 命令也能够找到访问点。然而,实际情况并非如此:nmcli 命令总是发现 12 个或更多 AP,但 dbus-send 命令只发现一个。

我肯定只有一个无线适配器:ifconfig -a 列表:enp0s25、lo、sit0 和 wlp3s0。

什么是 nmcli 命令而 dbus-send 命令没有的?

答案是您必须在获取 SSID 列表之前运行重新扫描(方法RequestScan)。