Python pysnmp使用方法及代码实例
SNMP标准引入一组ASN.1语言元素,称之为SMI(StructureofManagementInformation)。由SMI描述的相互关联的被管对象(ManagedObjects)组成MIB(ManagementInformationBase)模块。
核心MIB中经常用到的ManagedObjects成为SNMP标准的一部分。剩下的MIB一般由设备生产商在其设备中创建。(也就是说这些MIB是生产商和设备相关的)
PySNMP是一个纯粹用Python实现的SNMP。
用PySNMP的最抽象的API为One-lineApplications。其中有两类API:同步的和非同步的,都在模块pysnmp.entity.rfc3413.oneliner.cmdgen中实现。
所以在使用的时候为了方便,可以
frompysnmp.entity.rfc3413.onelinerimportcmdgen 然后用 cg=cmdgen.CommandGenerator() 来产生一个CommandGenerator对象, 以后调用cg的getCmd等方法来获取或者设置网络设备信息。
getCmd()需要三个参数:
1.cmdgen.CommunityData()##社区信息传入三个数据,安全my-agent、社区名public、snmp协议版本,之间用逗号隔开,例如cmdgen.CommunityData('my-agent','public',1)
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数据:
frompysnmp.entity.rfc3413.onelinerimportcmdgen defsnmpget(): cg=cmdgen.CommandGenerator()##获得CommandGenerator对象 errorIndication,errorStatus,errorIndex,varBinds=cg.getCmd( #0代表v1,1代表v2c cmdgen.CommunityData('my-agent','public',1),##社区信息,my-agent,public表示社区名,1表示snmpv2c版本,0为v1版本 cmdgen.UdpTransportTarget(('192.168.70.237',161)),##这是传输的通道,传输到IP192.168.70.237,端口161上(snmp标准默认161UDP端口) '.1.3.6.1.4.1.1800.5.13.2'##传送的OID,个人认为MIB值 ) printstr(varBinds[0][1]);##varBinds返回是一个stulp,含有MIB值和获得值 defrunit(loop=1): foriinrange(loop): snmpget() #printi if__name__=="__main__": runit(loop=1)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。