Python pysnmp使用方法及代码实例


Posted in Python onAugust 24, 2020

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 相关文章推荐
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
Python实现进程同步和通信的方法
Jan 02 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
python绘制多个曲线的折线图
Mar 23 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
python 寻找离散序列极值点的方法
Jul 10 Python
Python max函数中key的用法及原理解析
Jun 26 Python
Python面试不修改数组找出重复的数字
May 20 Python
详解python tcp编程
Aug 24 #Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 #Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 #Python
深入分析python 排序
Aug 24 #Python
超级实用的8个Python列表技巧
Aug 24 #Python
基于CentOS搭建Python Django环境过程解析
Aug 24 #Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 #Python
You might like
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
用Python遍历C盘dll文件的方法
2015/05/06 Python
Python中格式化format()方法详解
2017/04/01 Python
python paramiko模块学习分享
2017/08/23 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
C语言变量的命名规则都有哪些
2013/12/27 面试题
高校自主招生自荐信
2013/12/09 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
公司委托书范本
2014/04/04 职场文书
绿色校园广播稿
2014/10/13 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
基于flask实现五子棋小游戏
2021/05/25 Python