Я хочу эффективно отслеживать состояние РАБОТА определенного сетевого интерфейса без постоянного вызова ifconfig
каждую секунду или около того, и анализирует его вывод. Поэтому я спрашиваю, знает ли кто-нибудь способ эффективного получения этой информации о состоянии в Python в Linux.
я знаю netifaces
, но он не дает мне состояния интерфейса. Так что я не знаю, доступен ли интерфейс просто или действительно онлайн / работает.
Затем я заглянул в psutil
, но если бы я что-то там не пропустил, у него тоже нет доступа к такому состоянию сетевого интерфейса. Если я ошибаюсь, я буду рад получить исправление и конкретную информацию о том, как достичь своей цели.
Оказывается, чтение /sys/class/net/eth0/carrier
работает достаточно хорошо и качественно. В частности, нет необходимости постоянно запускать open()
/readline()
/close()
последовательность, так как это гораздо менее эффективно, чем просто open()
только один раз, а затем повторно seek(0)
с последующим readline()
.
Все это работает даже при вытягивании и горячем подключении сетевого интерфейса.
А flush()
не является необходимым и в этом случае ничего не сделает, так как open(...,'r')
только для чтения и flush()
согласно официальной документации Python, в этом режиме нельзя работать.