Python pysnmp使用方法及代码实例

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#简单实现SNMP的方法

    本文实例讲述了C#简单实现SNMP的方法.分享给大家供大家参考.具体如下: /** C# Network Programming by Richard Blum Publisher: Sybex ISBN: 0782141765 */ using System; using System.Text; using System.Net; using System.Net.Sockets; public class SimpleSNMP { public static void Main(strin

  • Windows服务器SNMP服务的配置方法

    在Windows服务器上配置SNMP服务时,使用手动填写信息太麻烦.下面是使用命令行执行配置文件来实现. 创建snmp.inf 复制代码 代码如下: [NetOptionalComponents] SNMP = 1 [SNMP] Contact_Name = "ITSupport" Location = "ServerRoom" Service = Physical, Applications, End-to-End Community_Name = Type_yo

  • SNMP漏洞威胁网络安全

    本周,CERT发出警告,使用简单网络管理协议(SNMP)的网络面临被黑客入侵的威胁,在没有任何征兆的情况下,入侵者可以完全接管你的网络,控制网络的通信流,或者扰乱网络中的正常事务.幸运的是,此问题的解决方案已经公布,虽然实施过程比较单调乏味,不过修补该漏洞的过程还是相当简单的.  SNMP是TCP/IP网络中标准的管理协议,它允许网络中的各种设备和软件,包括交换机,路由器,防火墙,集线器,甚至操作系统,服务器产品和部件等,能与管理软件通信,汇报其当前的行为和状态.但是,SNMP还能被用于

  • 详解python并发获取snmp信息及性能测试

    python & snmp 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取snmp的数据,即同时获取多台机器的snmp信息. netsnmp 先说netsnmp.python的netsnmp,其实是来自于net-snmp包. python通过一个c文件调用net-snmp的接口获取数据. 因此,在并发获取多台机器的时候,不能够使用协程获取.因为使用协程,在get数据的时候,协程会

  • 使用IPython下的Net-SNMP来管理类UNIX系统的教程

    引言 对于简单网络管理协议 (SNMP),大多数系统管理员都具有一定的使用经验,或者至少听说过它.如果您正在一个数据中心工作,那么您每天都可能采用某种方式与 SNMP 进行交互.有许多给人印象深刻的.同等规模的网络管理系统 (NMS) 或者网络监视系统使用了 SNMP 监视,但本文并不打算介绍这些系统.本文主要涉及的是通过 Python? 语言来研究 SNMP,并亲自编写相关的代码. 一位朋友最近告诉我,有时候遇到的情况就像:只是希望沿着街道一路走到奶奶家,而不需要乘坐像 Saturn V 火箭

  • Zabbix基于snmp实现监控linux主机

    前言: linux主机的话还是比较好处理的,无论是安装agent代理程序还是使用snmp,都是比较方便的,本文旨在介绍通过snmp使client与server进行连接. 环境: server:192.168.249.142 client:192.168.249.145 基础配置:关闭selinux,关闭防火墙或者打开161端口. 一.client端snmp的基础配置: 1.安装snmp(使用阿里yum源): [root@cinder snmp]# yum install net-snmp 2.根

  • Linux下实现SNMP一键安装的Shell脚本

    Net-SNMP是一个免费的.开放源码的SNMP实现,以前称为UCD-SNMP.SNMP 很多都用其安装之后,作为监控宝和阿里云的系统信息监控使用.下面就来分享linux下实现SNMP一键安装的shell脚本: #!/usr/bin/env bash export LC_ALL=C if [ "$(id -u)" != "0" ] then echo "This script. must be run as root" 1>&2 e

  • CentOS服务器+监控宝SNMP监控全攻略分享

    下来大家按照下面的几个命令执行下去就可以快速安全的安装好net-snmp 复制代码 代码如下: yum install net-snmp yum install net-snmp-utils 首先使用yum命令安装net-snmp以及net-snmo-utils 复制代码 代码如下: rm /etc/snmp/snmpd.conf vi /etc/snmp/snmpd.conf 然后删除默认的snmpd.conf,写入下列内容 复制代码 代码如下: rouser sudu auth 其中的"su

  • Python pysnmp使用方法及代码实例

    SNMP标准引入一组ASN.1语言元素,称之为SMI(Structure of Management Information).由SMI描述的相互关联的被管对象(Managed Objects)组成MIB(Management Information Base)模块. 核心MIB中经常用到的Managed Objects成为SNMP标准的一部分.剩下的MIB一般由设备生产商在其设备中创建.(也就是说这些MIB是生产商和设备相关的) PySNMP是一个纯粹用Python实现的SNMP. 用PySN

  • 基于Python下载网络图片方法汇总代码实例

    本文介绍下载python下载网络图片的方法,包括通过图片url直接下载.通过re/beautifulSoup解析html下载以及对动态网页的处理等. 通过pic_url单个/批量下载 已知图片url,例如http://xyz.com/series-*(1,2..N).jpg,共N张图片,其链接形式较为固定,这样经简单循环,直接通过`f.write(requests.get(url).content)'即可以二进制形式将图片写入. import os import requests def dow

  • Python字典fromkeys()方法使用代码实例

    fromkeys()方法类似于列表的浅拷贝 首先用该方法创建一个字典 dict_ = dict.fromkeys(('a','b','c','d'),[]) print(dict_) OUT: {'a': [], 'b': [], 'c': [], 'd': []} 当我向某个key添加value时,问题出现了 dict_['b'].append("!!!") print(dict_) OUT: {'a': ['!!!'], 'b': ['!!!'], 'c': ['!!!'], 'd

  • Python文件操作基本流程代码实例

    文件操作之基本流程 #文本 近日,上市药企--浙江莎普爱思药业股份有限公司频遭质疑. 12月2日,一篇名为<一年卖出7.5亿的洗脑"神药",请放过中国老人>的文章称, 多位眼科医生并不认可莎普爱思滴眼液的"白内障防治功效".质疑者认为, 莎普爱思滴眼液是"假科普,真营销",通过广告误导患者. 针对质疑,莎普爱思3日晚发布的公告称, 0.5%苄达 赖氨酸滴眼液已于上世纪90年代通过了临床试验, 是一种安全的.有效的抗白内障药物.假的 #

  • python的unittest测试类代码实例

    nittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者就总结下如何使用unittest单元测试框架来进行WEB自动化测试. 题目: 编写一个名为Employee的类,其方法__init__()接受名.姓和年薪,并将它们都存储在属性中.编写一个名为give_raise()的方法,它默认将年薪增加5000美元,但也能够接受其他的年薪增加量. 为Employe

  • Python进度条的制作代码实例

    这篇文章主要介绍了Python进度条的制作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import sys,time #导入模块 for i in range(50): #进度条的长度 sys.stdout.write("#") #进度条的内容,这里要注意了,pycharm有可能不显示write的方法 sys.stdout.flush() #刷新缓存 time.sleep(0.5) #间隔时间,和shell的sleep差不

  • Python实现自定义读写分离代码实例

    这篇文章主要介绍了Python实现自定义读写分离代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 思路 自定义Session类 重写get_bind方法 根据self._flushing判断读写操作, 选择对应的数据库 自定义SQLAlchemy类 重写create_session, 在其中使用自定义的Session类 from flask import Flask from flask_sqlalchemy import SQLAlch

  • Python多线程获取返回值代码实例

    这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值进行其他操作,下面的方法以作参考: 一,首先重写threading类,使其满足调用特定的方法获取其返回值 import threading class MyThread(threading.Thread): """重写多线程,使其能够返回值""" d

  • Python数组并集交集补集代码实例

    这篇文章主要介绍了Python数组并集交集补集代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 并集 a = ["a", "b", "c", "d"] b = ["b", "e"] c = ["a", "b", "c", "d", "e&qu

  • python识别文字(基于tesseract)代码实例

    这篇文章主要介绍了python识别文字(基于tesseract)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Ubuntu版本: 1.tesseract-ocr安装 sudo apt-get install tesseract-ocr 2.pytesseract安装 sudo pip install pytesseract 3.Pillow 安装 sudo pip install pillow 开始写代码: from PIL impo

随机推荐