Как вы на самом деле используете dbus для получения списка видимых SSID из NetworkManager? - PullRequest
0 голосов
/ 09 ноября 2019

В соответствии с примером 12 здесь я должен иметь возможность использовать

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 - это мой беспроводной адаптер. Однако кажется, что он возвращает результаты, отличные от эквивалента командной строки

nmcli device wifi list

, который возвращает гораздо больше идентификаторов SSID. Экспериментируя с вышесказанным на работе, я мог получить только один SSID через dbus-send. Дома, когда я впервые выполнил команду dbus-send, она вернула массив из четырех точек доступа, который совпадает с числом, возвращаемым nmcli. Я снова выполнил ту же команду dbus-send, и на этот раз она выдала список только с одной точкой доступа, как на работе.

На следующий день дома я несколько раз попробовал команду dbus-send, и она выгляделатолько одна точка доступа. Затем я снова запустил команду nmcli, и она перечислила пять точек доступа. После этого команда dbus-send также перечислила пять точек доступа. Кажется, что команда nmcli каким-то образом идет дальше, чем команда dbus-send, для обнаружения точек доступа, но как только она это сделала, команда dbus-send также может найти точки доступа. Однако на деле это не так: команда nmcli всегда обнаруживает 12 или более точек доступа, а команда dbus-send обнаруживает только одну.

У меня определенно есть только один беспроводной адаптер: списки ifconfig -a: enp0s25, lo, sit0 и wlp3s0.

Что означает команда nmcli, а команда dbus-send - нет?

1 Ответ

0 голосов
/ 12 ноября 2019

Ответ заключается в том, что вам нужно запустить повторное сканирование (метод RequestScan) непосредственно перед получением списка SSID.

...