Какой API предоставляет уведомления о беспроводных сетях в Linux?

StackOverflow https://stackoverflow.com/questions/835804

Вопрос

Я бы хотел запускать обратный вызов каждый раз, когда моя сетевая карта отправляет новую информацию о доступных сетях.Я действительно не возражаю, если мне тоже придется самому опрашивать информацию.Я просто не хочу полагаться на нерест ".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, хотя, возможно, это не то, чего вы хотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top