在 Python 中實現 Snmpwalk 實用程式

Manav Narula 2022年5月18日
在 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 實用程式。它接受一個 VarListVarBind 將從中開始 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() 中管理器的伺服器和密碼詳細資訊一起傳遞,以檢索網路資訊。

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

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