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压缩和解压缩zip文件
Feb 14 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
单利模式及python实现方式详解
Mar 20 Python
详解python数据结构和算法
Apr 18 Python
详解Python静态网页爬取获取高清壁纸
Apr 23 Python
numpy中的meshgrid函数的使用
Jul 31 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
如何通过python检查文件是否被占用
Dec 18 Python
Python数据结构之队列详解
Mar 21 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
解析php中const与define的应用区别
2013/06/18 PHP
php常见的魔术方法详解
2014/12/25 PHP
php实现RSA加密类实例
2015/03/26 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
总结js函数相关知识点
2018/02/27 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
使用JavaScript破解web
2018/09/28 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
在Python中使用dict和set方法的教程
2015/04/27 Python
Python内置类型性能分析过程实例
2020/01/29 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
python如何输出反斜杠
2020/06/18 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
土木工程专业个人求职信
2013/12/05 职场文书
制药工程专业毕业生推荐信
2013/12/24 职场文书
英语生日邀请函
2014/01/23 职场文书
《石榴》教学反思
2014/03/02 职场文书
生物技术专业求职信
2014/06/10 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
雾霾停课通知
2015/04/24 职场文书