在 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