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 相关文章推荐
使用Python编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
python 实现在Excel末尾增加新行
May 02 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
解读python如何实现决策树算法
Oct 11 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
Python-opencv 双线性插值实例
Jan 17 Python
Python celery原理及运行流程解析
Jun 13 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
windows支持哪个版本的python
Jul 03 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
python爬虫基础之urllib的使用
Dec 31 Python
Python必备技巧之字符数据操作详解
Mar 23 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
Zend Guard一些常见问题解答
2008/09/11 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Python中的urllib模块使用详解
2015/07/07 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
古驰英国官网:GUCCI英国
2020/03/07 全球购物
计算机软件个人的自荐信范文
2013/12/01 职场文书
客房主管岗位职责
2013/12/09 职场文书
关于工作经历的证明书
2014/10/11 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
七年级生物教学反思
2016/02/20 职场文书
总结Python常用的魔法方法
2021/05/25 Python
JavaScript实现两个数组的交集
2022/03/25 Javascript