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字典多条件排序方法实例
Jun 30 Python
python的类方法和静态方法
Dec 13 Python
Python中的zip函数使用示例
Jan 29 Python
python tensorflow基于cnn实现手写数字识别
Jan 01 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 Python
Python猜数字算法题详解
Mar 01 Python
python str字符串转uuid实例
Mar 03 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 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
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
JS二分查找算法详解
2017/11/01 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
python获取当前计算机cpu数量的方法
2015/04/18 Python
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
如何利用Python写个坦克大战
2020/11/18 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
化工机械应届生求职信
2013/11/04 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
政府门卫岗位职责
2014/04/29 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
老兵退伍感言
2015/08/03 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android