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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
Python中类型检查的详细介绍
Feb 13 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
python退出循环的方法
Jun 18 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
详细分析Python垃圾回收机制
Jul 01 Python
Python发送邮件实现基础解析
Aug 14 Python
Python中快速掌握Data Frame的常用操作
Mar 31 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
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
jquery编写日期选择器
2017/03/16 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
python修改字典内key对应值的方法
2015/07/11 Python
python自定义异常实例详解
2017/07/11 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
Python验证码截取识别代码实例
2020/05/16 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
创建文明学校实施方案
2014/03/11 职场文书
上党课的心得体会
2014/09/02 职场文书
企业培训简报范文
2015/07/20 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python