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下如何让web元素的生成更简单的分析
Jul 17 Python
Python实用日期时间处理方法汇总
May 09 Python
Python生成不重复随机值的方法
May 11 Python
python使用wxpython开发简单记事本的方法
May 20 Python
深入理解Python中变量赋值的问题
Jan 12 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
Python生成器generator用法示例
Aug 10 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
Python换行与不换行的输出实例
Feb 19 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
Python读写csv文件流程及异常解决
Oct 20 Python
python入门学习关于for else的特殊特性讲解
Nov 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
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
jquery垂直公告滚动实现代码
2013/12/08 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
react路由配置方式详解
2017/08/07 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
20个常用Python运维库和模块
2018/02/12 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python机器学习之神经网络实现
2018/10/13 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
行政助理岗位职责
2013/11/10 职场文书
幼儿园中秋节活动反思
2014/02/16 职场文书
医药营销个人求职信
2014/04/12 职场文书
庆七一宣传标语
2014/10/08 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
门面房租房协议书
2014/12/01 职场文书
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫