zoukankan      html  css  js  c++  java
  • python pysnmp使用

    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)
    

      

  • 相关阅读:
    罗马数字转整数-算法练习
    无重复字符的最长字串-算法练习
    亲密字符串-算法刷题笔记
    0-n-1中缺失的数字-算法总结笔记
    高度检查表-算法笔记总结
    链表删除中间结点-算法练习总结
    链表中的中间结点-算法练习总结
    链表相交-算法练习总结
    多数元素-算法笔记总结
    Consul Windows集群搭建ACL Token验证
  • 原文地址:https://www.cnblogs.com/xzlive/p/13246509.html
Copyright © 2011-2022 走看看