Получение доступных сетей через интерфейс NetworkManager D-Bus

Проблема под рукой

Debian перешел к более новому методу выделения имен интерфейсов. Вашему USB-адаптеру Wi-Fi присваивается имя интерфейса на основе его MAC-адреса. Вот ссылка на список рассылки с изложением изменений. Я постараюсь помочь вам, описав старый метод принудительного ввода имени адаптера и то, что может работать как новый метод.

1. Старый метод

Имена интерфейсов можно назначать с помощью udev. Найдите файл с именем /etc/udev/rules.d/70-persistent-net.rulesи добавьте часть, в которой указано имя вашего адаптера. Это должно выглядеть примерно так:

SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="[MAC ADDRESS]", NAME="[Adapter Name]" 

Здесь вы можете изменить имена всех ваших устройств, сначала проверьте их по MAC-адресу. Отключите интерфейс, затем запустите udevadm trigger --sysname [Old Interface Name]и снова включите интерфейс. Это должно изменить имя, как указано в этом посте . Однако это может больше не быть допустимым способом управления вашими интерфейсами с точки зрения растяжения.

2. Новый метод

Я включаю ссылку на Freedesktop Wiki по предсказуемым именам сетевых интерфейсов . Я также ссылаюсь на этот пост, посвященный аналогичной проблеме . Это касается Ubuntu, но все же может применяться.

Там пользователь предлагает создать символическую ссылку между /etc/udev/rules.d/80-net-setup-link.rulesи /dev/null. Сначала начните с копирования правила 80 из /lib/udev/rules.dв /etc/udev/rules.d. Его содержимое должно соответствовать тому, что указано в посте . Затем запустите:

sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

и перезагрузите компьютер. Это должно позволить вашему беспроводному USB-интерфейсу иметь предсказуемое имя сетевого интерфейса.

Заключение

Сначала прочтите все ссылки, которые я предоставил, и убедитесь, что в вашей системе есть udevи соответствующие файлы. Эти исправления должны работать, однако я всегда проверял эти изменения перед постоянным отключением определенных функций. Если есть какие-либо неправильные представления или проблемы с моим сообщением, пожалуйста, не стесняйтесь спрашивать. Я всегда ценю исправления. Удачи!

2
27.04.2020, 23:10
1 ответ

Почти все, что делает nmcli, достигается за счет использования D -Bus API. Как и большинство клиентов NetworkManager.

Документация по API находится здесь:https://developer.gnome.org/NetworkManager/stable/spec.html#dbus-interfaces

См. объекты /org/freedesktop/NetworkManager/AccessPoint/*. Также устройство Wi -Fi имеет свойство AccessPoints. См. https://developer.gnome.org/NetworkManager/stable/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html.

Кроме того, сначала может потребоваться запустить сканирование. См. отметку времени LastScanна устройстве.

И, наконец, я не понимаю, почему вы не можете поговорить с просителем wpa _только для того, чтобы получить текущий список сканирования. По крайней мере, если вы не вмешиваетесь в то, что делает NetworkManager, это должно работать. Однако, я бы говорил только с NM.

2
19.03.2021, 02:25

Теги

Похожие вопросы