高效的 Python 库用于查询 Linux 上给定网络接口的运行状态?

高效的 Python 库用于查询 Linux 上给定网络接口的运行状态?

我想以高效的方式监控某个网络接口的运行状态,而不需要ifconfig每秒不断调用一次并解析其输出。所以我想问是否有人知道如何在 Linux 上的 Python 中高效获取此状态信息。

我知道netifaces,但它没有提供接口状态。所以我不知道接口是可用,还是真的在线/正在运行。

然后我查看了psutil,但如果我没有遗漏那里的某些内容,它也无法访问这种网络接口状态。如果我错了,我很乐意得到纠正并获得有关如何实现我的目标的具体信息。

答案1

事实证明,阅读/sys/class/net/eth0/carrier效果非常好,而且效率很高。特别是,没有必要不断运行open()/ readline()/close()序列,因为这比简单地open()只运行一次然后重复执行seek(0)后跟的效率要低得多readline()

这一切甚至可以通过拉动和热插拔网络接口来实现。

在这种情况下, Aflush()不是必需的,也不会执行任何操作,因为根据官方 Python 文档,在这种模式下open(...,'r')是只读的并且flush()是无操作的。

相关内容