Linux-Networking

高效的 Python 庫來查詢 Linux 上給定網路介面的 RUNNING 狀態?

  • July 26, 2017

我想以一種有效的方式監控某個網路介面的 RUNNING 狀態,而不是ifconfig每隔一秒左右不斷地呼叫,並解析它的輸出。所以我問是否有人知道一種方法可以在 Linux 上的 Python 中有效地獲取此狀態資訊。

我知道netifaces,但它沒有給我界面狀態。所以我不知道界面是剛剛可用,還是真的線上/執行。

然後我查看了psutil,但如果我沒有錯過那裡的東西,它也無法訪問這種網路介面狀態。如果我錯了,我很樂意得到糾正並獲得有關如何實現我的目標的具體資訊。

事實證明,閱讀/sys/class/net/eth0/carrier工作得很好而且很有效。特別是,沒有必要不斷地執行open()//序列readline()close()因為這比簡單地open()只執行一次然後重複地執行seek(0)後面跟著的效率要低得多readline()

這一切甚至可以通過拉取和熱插拔網路介面來實現。

根據官方 Python 文件, Aflush()不是必需的,在這種情況下也不會做任何事情,因為它open(...,'r')是只讀的並且flush()在這種模式下是無操作的。

引用自:https://serverfault.com/questions/862262