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字典序问题实例
Sep 26 Python
python3生成随机数实例
Oct 20 Python
python实现颜色rgb和hex相互转换的函数
Mar 19 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
Jun 29 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
快速了解Python相对导入
Jan 12 Python
使用Python横向合并excel文件的实例
Dec 11 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
pycharm修改file type方式
Nov 19 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
简单了解Python字典copy与赋值的区别
Sep 16 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中的时间处理
2006/10/09 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
Python常用小技巧总结
2015/06/01 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
python如何实现复制目录到指定目录
2020/02/13 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
经典c++面试题四
2015/05/14 面试题
银行毕业实习自我鉴定
2013/09/19 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL