如何运用Python pysnmp实现网络设备监控的代码示例?

2026-05-16 20:132阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计511个文字,预计阅读时间需要3分钟。

如何运用Python pysnmp实现网络设备监控的代码示例?

SNMP标准引入一组ASN.1语言元素,称为SMI(Structure of Management Information)。SMI描述了一系列相互关联的受管理对象(Managed Objects),这些对象共同构成MIB(Management Information Base)模块。在核心MIB中,常用到诸如ifType(接口类型)和ifSpeed(接口速度)等元素。

SNMP标准引入一组ASN.1语言元素,称之为SMI(Structure of Management Information)。由SMI描述的相互关联的被管对象(Managed Objects)组成MIB(Management Information Base)模块。

核心MIB中经常用到的Managed Objects成为SNMP标准的一部分。剩下的MIB一般由设备生产商在其设备中创建。(也就是说这些MIB是生产商和设备相关的)

PySNMP是一个纯粹用Python实现的SNMP。

用PySNMP的最抽象的API为One-line Applications。其中有两类API:同步的和非同步的,都在模块pysnmp.entity.rfc3413.oneliner.cmdgen 中实现。

所以在使用的时候为了方便,可以

from pysnmp.entity.rfc3413.oneliner import cmdgen 然后用 cg = cmdgen.CommandGenerator() 来产生一个CommandGenerator对象, 以后调用cg的getCmd等方法来获取或者设置网络设备信息。

getCmd()需要三个参数:

1.cmdgen.CommunityData() ##社区信息 传入三个数据,安全my-agent、社区名public、snmp协议版本,之间用逗号隔开,例如 cmdgen.CommunityData('my-agent', 'public', 1)

如何运用Python pysnmp实现网络设备监控的代码示例?

2.cmdgen.UdpTransportTarget() ##通道参数,传入一个元组,包含主机IP/域名和端口,例如:cmdgen.UdpTransportTarget(('192.168.70.237', 161)

3. OID ##mib值,例如 '.1.3.6.1.4.1.1800.5.13.2'

注意:三个参数之间用 ","隔开。

下面上个例子是获得设备snmp数据:

from pysnmp.entity.rfc3413.oneliner import cmdgen def snmpget(): cg = cmdgen.CommandGenerator() ##获得CommandGenerator对象 errorIndication, errorStatus, errorIndex, varBinds = cg.getCmd( #0代表v1,1代表v2c cmdgen.CommunityData('my-agent', 'public', 1), ##社区信息,my-agent ,public 表示社区名,1表示snmp v2c版本,0为v1版本 cmdgen.UdpTransportTarget(('192.168.70.237', 161)),##这是传输的通道,传输到IP 192.168.70.237, 端口 161上(snmp标准默认161 UDP端口) '.1.3.6.1.4.1.1800.5.13.2' ##传送的OID,个人认为MIB值 ) print str(varBinds[0][1]); ##varBinds返回是一个stulp,含有MIB值和获得值 def runit(loop=1): for i in range(loop): snmpget() #print i if __name__ == "__main__": runit(loop=1)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计511个文字,预计阅读时间需要3分钟。

如何运用Python pysnmp实现网络设备监控的代码示例?

SNMP标准引入一组ASN.1语言元素,称为SMI(Structure of Management Information)。SMI描述了一系列相互关联的受管理对象(Managed Objects),这些对象共同构成MIB(Management Information Base)模块。在核心MIB中,常用到诸如ifType(接口类型)和ifSpeed(接口速度)等元素。

SNMP标准引入一组ASN.1语言元素,称之为SMI(Structure of Management Information)。由SMI描述的相互关联的被管对象(Managed Objects)组成MIB(Management Information Base)模块。

核心MIB中经常用到的Managed Objects成为SNMP标准的一部分。剩下的MIB一般由设备生产商在其设备中创建。(也就是说这些MIB是生产商和设备相关的)

PySNMP是一个纯粹用Python实现的SNMP。

用PySNMP的最抽象的API为One-line Applications。其中有两类API:同步的和非同步的,都在模块pysnmp.entity.rfc3413.oneliner.cmdgen 中实现。

所以在使用的时候为了方便,可以

from pysnmp.entity.rfc3413.oneliner import cmdgen 然后用 cg = cmdgen.CommandGenerator() 来产生一个CommandGenerator对象, 以后调用cg的getCmd等方法来获取或者设置网络设备信息。

getCmd()需要三个参数:

1.cmdgen.CommunityData() ##社区信息 传入三个数据,安全my-agent、社区名public、snmp协议版本,之间用逗号隔开,例如 cmdgen.CommunityData('my-agent', 'public', 1)

如何运用Python pysnmp实现网络设备监控的代码示例?

2.cmdgen.UdpTransportTarget() ##通道参数,传入一个元组,包含主机IP/域名和端口,例如:cmdgen.UdpTransportTarget(('192.168.70.237', 161)

3. OID ##mib值,例如 '.1.3.6.1.4.1.1800.5.13.2'

注意:三个参数之间用 ","隔开。

下面上个例子是获得设备snmp数据:

from pysnmp.entity.rfc3413.oneliner import cmdgen def snmpget(): cg = cmdgen.CommandGenerator() ##获得CommandGenerator对象 errorIndication, errorStatus, errorIndex, varBinds = cg.getCmd( #0代表v1,1代表v2c cmdgen.CommunityData('my-agent', 'public', 1), ##社区信息,my-agent ,public 表示社区名,1表示snmp v2c版本,0为v1版本 cmdgen.UdpTransportTarget(('192.168.70.237', 161)),##这是传输的通道,传输到IP 192.168.70.237, 端口 161上(snmp标准默认161 UDP端口) '.1.3.6.1.4.1.1800.5.13.2' ##传送的OID,个人认为MIB值 ) print str(varBinds[0][1]); ##varBinds返回是一个stulp,含有MIB值和获得值 def runit(loop=1): for i in range(loop): snmpget() #print i if __name__ == "__main__": runit(loop=1)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。