当前位置: 移动技术网 > IT编程>脚本编程>Python > Python pysnmp使用方法及代码实例

Python pysnmp使用方法及代码实例

2020年08月25日  | 移动技术网IT编程  | 我要评论
snmp标准引入一组asn.1语言元素,称之为smi(structure of management information)。由smi描述的相互关联的被管对象(managed objects)组成m

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)

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)

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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网