在 Python 中實現 Snmpwalk 實用程式
SNMP(簡單網路管理協議)協議用於網路管理系統中,用於伺服器和遠端裝置之間的通訊。伺服器稱為管理器,遠端裝置稱為代理。
MIB 中的代理建立經理可以讀取和控制的所有資訊。MIB 是一種類似於樹的表結構,其中的數字代表所有節點。
該協議不是由 Python 本機實現的。在 Python 中,我們使用 netsnmp
模組,這是一個開源模組,提供不同的工具來模擬各種 SNMP 實用程式。
本教程將演示用於 snmpwalk
實用程式的 Python netsnmp
模組。
在 Python 中實現 snmpwalk
實用程式
我們可以使用 SNMP GETNEXT 請求檢索 SNMP 管理資料。snmpwalk
使用這些 GETNEXT 請求從 MIB 層次結構中檢索值。
使用 snmpwalk
應用程式,我們執行多個請求以一次從整個 MIB 層次結構中獲取值。
要在 Python 中實現,我們可以使用 netsnmp.snmpwalk()
函式來模擬 snmpwalk
實用程式。它接受一個 VarList
或 VarBind
將從中開始 snmpwalk
。
它以元組的形式返回 MIB 中的值。建議傳遞 VarList
而不是 VarBind
,因為 VarList
會反覆更新,直到它包含完整的 VarBind
結果集。
如果通過了 VarBind
,則無法檢查返回的 OID。
如下所示,我們將使用這個函式來模擬 Python 中的 snmpwalk
。
import netsnmp
server = "172.xx.x.x"
password = "snmp_private"
oids_varlist = netsnmp.VarList('IF-MIB::ifName','IF-MIB::ifDescr')
result = netsnmp.snmpwalk(oids_varlist, Version=2, DestHost=server, Community=password)
在上面的示例中,我們使用 netsnmp.VarList()
建構函式建立了一個 VarList
。這與 netsnmp.snmpwalk()
中管理器的伺服器和密碼詳細資訊一起傳遞,以檢索網路資訊。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn