在 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