我想以高效的方式监控某个网络接口的运行状态,而不需要ifconfig
每秒不断调用一次并解析其输出。所以我想问是否有人知道如何在 Linux 上的 Python 中高效获取此状态信息。
我知道netifaces
,但它没有提供接口状态。所以我不知道接口是可用,还是真的在线/正在运行。
然后我查看了psutil
,但如果我没有遗漏那里的某些内容,它也无法访问这种网络接口状态。如果我错了,我很乐意得到纠正并获得有关如何实现我的目标的具体信息。
答案1
事实证明,阅读/sys/class/net/eth0/carrier
效果非常好,而且效率很高。特别是,没有必要不断运行open()
/ readline()
/close()
序列,因为这比简单地open()
只运行一次然后重复执行seek(0)
后跟的效率要低得多readline()
。
这一切甚至可以通过拉动和热插拔网络接口来实现。
在这种情况下, Aflush()
不是必需的,也不会执行任何操作,因为根据官方 Python 文档,在这种模式下open(...,'r')
是只读的并且flush()
是无操作的。