Получение уведомлений о событиях «Ethernet-кабель подключен» в Linux - PullRequest
2 голосов
/ 18 августа 2011

Я пишу приложение Python, работающее на Linux. Я хочу иметь возможность зарегистрироваться и быть уведомленным системой, если сетевой кабель подключен / отключен .

Я уже использую pyUdev (привязки python для libUdev), чтобы получать уведомления о событиях USB-подключения. Однако, поскольку сетевой модуль eth0 (например) всегда остается загруженным (независимо от подключаемого кабеля), я не получаю нужную мне информацию. Работает только для событий вверх / вниз.

Я прочитал много постов в Windows WMI, предоставляющих эту функциональность, но ни одного в linux. Я смотрю в правильном направлении?

Идея Python (библиотека Python) была бы идеальной, поскольку я хочу интегрировать это с моей программой.

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

Существует много способов получить состояние «UP» сетевого интерфейса с помощью опроса, начиная от простого анализа ifconfig вывода до чтения состояния / proc / net / ... псевдофайлов..

Однако для того, чтобы получать уведомление (т.е. не опрашивать себя) о таких событиях, лучшим вариантом в Ubuntu является использование пакета netplug .По умолчанию он не установлен, вам нужно: sudo apt-get install netplug

Некоторая документация находится здесь: http://manpages.ubuntu.com/manpages/lucid/man8/netplugd.8.html

Чтобы настроить его, вам нужно настроить / etc / netplug / netplugdСкрипты .conf и / etc / netplug / netplug.В качестве примера этих конфигурационных файлов обратитесь к разделу «Настройка netplug» по адресу http://natisbad.org/dyn-net/index.html

С / etc / netplug / netplug вы можете иметь свой собственный скрипт python, который вызывается, когда сеть отключается / поднимается, так что вы можетеможет создать событие для вашего приложения.

0 голосов
/ 18 августа 2011

Посмотрели ли вы команду netplugd , я не уверен, существует ли оболочка Python, но не должно быть сложно проанализировать вывод

...