Python pysnmp使用方法及代码实例

 更新时间:2020年08月24日 10:06:24   作者:邯郸-小刀  
这篇文章主要介绍了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)

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

相关文章

  • Python实现批量检测ip地址连通性

    Python实现批量检测ip地址连通性

    这篇文章主要为大家详细介绍了如何使用Python实现批量检测ip地址连通性并以json格式显示(支持传参单IP或者网段),感兴趣的小伙伴可以了解下
    2024-04-04
  • python编程中简洁优雅的推导式示例详解

    python编程中简洁优雅的推导式示例详解

    这篇文章主要为大家介绍了python编程中简洁优雅的推导式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Python列表删除的三种方法代码分享

    Python列表删除的三种方法代码分享

    这篇文章主要介绍了Python列表删除的三种方法代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • 解决reload(sys)后print失效的问题

    解决reload(sys)后print失效的问题

    这篇文章主要介绍了解决reload(sys)后print失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Django的CVB实例详解

    Django的CVB实例详解

    在本篇文章小编给大家整理的是关于Django的CVB实例详解内容,有需要的朋友们可以跟着学习下。
    2020-02-02
  • 使用Python编写截图轻量化工具

    使用Python编写截图轻量化工具

    这篇文章主要为大家详细介绍了如何使用Python编写一个截图轻量化工具,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2025-02-02
  • 浅析Python3爬虫登录模拟

    浅析Python3爬虫登录模拟

    本篇文章通过学习python爬虫相关知识点来分析Python3爬虫登录模拟的原理以及相关代码分析,对此有兴趣的朋友参考下。
    2018-02-02
  • 详解Python数据结构与算法中的顺序表

    详解Python数据结构与算法中的顺序表

    线性表在计算机中的表示可以采用多种方法,采用不同存储方法的线性表也有着不同的名称和特点。线性表有两种基本的存储结构:顺序存储结构和链式存储结构。本文将介绍顺序存储结构的特点以及各种基本运算的实现。需要的可以参考一下
    2022-01-01
  • 启动targetcli时遇到错误解决办法

    启动targetcli时遇到错误解决办法

    这篇文章主要介绍了启动targetcli时遇到错误解决办法的相关资料,希望通过本文能帮助到大家,让大家遇到这样的错误解决,需要的朋友可以参考下
    2017-10-10
  • Python中关于set的基本用法

    Python中关于set的基本用法

    这篇文章主要介绍了Python中关于set的基本用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论