Какой API предоставляет уведомления о беспроводных сетях в Linux?
-
08-07-2019 - |
Вопрос
Я бы хотел запускать обратный вызов каждый раз, когда моя сетевая карта отправляет новую информацию о доступных сетях.Я действительно не возражаю, если мне тоже придется самому опрашивать информацию.Я просто не хочу полагаться на нерест ".iwlist scan last
" каждую секунду, но это именно та информация, которая мне нужна (имя сети + канал + тип шифрования).
Существует ли библиотека, которая реализует подобную функцию?(или есть какие-то вызовы ioctl для этого?)
Меня интересует модуль ndiswrapper только в том случае, если это имеет значение.
Решение
Если NetworkManager запущен, он доступен через его DBUS API -- посмотрите на WirelessNetworkAppeared
и WirelessNetworkDisappeared
Мероприятия.
В противном случае вам придется иметь дело с векст самостоятельно (это то, что NM использует ниже), вы были бы заинтересованы в IWEVREGISTERED
и IWEVEXPIRED
события, происходящие в течение NETLINK_ROUTE - СЕТЕВОЙ КАНАЛ интерфейс.
Другие советы
Если вы не хотите использовать DBUS, вы также можете просто поместить скрипт / программу в /etc/NetworkManager/dispatcher.d/
, где он будет вызываться NetworkManager при определенных событиях.
Видишь "man 8 NetworkManager
" для типов событий и аргументов, передаваемых скрипту.Скрипт будет выполнен следующим образом root
, хотя, возможно, это не то, чего вы хотите.