PySNMP学习笔记(一)

转载 2018年04月17日 14:08:44
SNMP standard introduces a set of ASN.1 language constructs (such as ASN.1 subtypes and MACROs) which is called Structure of Management Information (SMI). Collections of related Managed Objects described in terms of SMI comprise Management Information Base (MIB) modules.
SNMP标准引入一组ASN.1语言元素,称之为SMI(Structure of Management Information)。由SMI描述的相互关联的被管对象(Managed Objects)组成MIB(Management Information Base)模块。

Commonly used Managed Objects form core MIBs that become part of SNMP standard. The rest of MIBs are normally created by vendors who build SNMP Agents into their products.
核心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等方法来获取或者设置网络设备信息。



同步One-line Applications:

所有的Command Generator Applications在同一个类中实现:

class CommandGenerator([snmpEngine])

产生一个SNMP Command Generator对象

CommandGenerator对象的方法实现特定的请求类型。

方法有:

getCmdauthDatatransportTarget*varNames )

执行SNMP GET请求,并返回一个响应或者指示错误。

authData是一个SNMP安全参数对象(Security Parameters object),transportTarget是一个SNMP传输配置对象(Transport Configuration object),*varNames是OID。

方法getCmd返回由errorIndicationerrorStatuserrorIndexvarBinds组成的一个tuple。

非空的errorIndication字符串指示SNMP引擎级别的错误(engine-level error)。

变量对errorStatuserrorIndex指示SNMP的PDU级别错误(PDU-level error)。如果errorStatus等于true,表明SNMP的PDU错误由varBinds索引为errorIndex-1的被管对象引起。

varBinds是由被管对象(Managed Objects)组成的tuple。响应中的被管对象位置与传递参数时的OID相同。每一个被管对象都是由Object NameObject Value组成的tuple。

安全配置:

Calls to one-line Applications API require Security Parameters and Transport configuration objects as input parameters. These classes serve as convenience shortcuts to SNMP engine configuration facilities and for keeping persistent authentication/transport configuration between SNMP engine calls.

one-line Application API的参数需要Security Parameters和Transport configuration对象作为参数。这两个类是使用SNMP引擎配置工具的快捷方式,并且用来持久的在多次SNMP引擎调用之间保存认证和传输配置。

Security Parameters object is Security Model specific. UsmUserData class serves SNMPv3 User-Based Security Model configuration, while CommunityData class is used for Community-Based Security Model of SNMPv1/SNMPv2c.

Security Parameters对象是安全模型相关的。类UsmUserData类用于SNMPv3的User-Based Security Model的配置,而CommunityData类用在SNMPv1/SNMPv2c中的Community-Based Security模型。


class CommunityDatasecurityNamecommunityName, mpModel=1 )

Create an object holding Community-Based Security Model specific configuration parameters.

必须的参数securityName是基于社区安全模型的用户名(字符串),在绝大多数情况下这可以是一个任意的字符串。

必须的参数communityName是SNMPv1/SNMPv2c的社区名字(字符串)。(这个应该就是我们使用的密码了,有public、private,或者是管理员另外配置的一个相当于密码的字符串。如果不对的话,Agent是不产生响应的。)

额外的参数mpModel指示使用SNMPv2c(mpModel=1,默认)还是使用SNMPv1(mpModel=0)协议。


传输配置:

Transport configuration object is Transport domain specific. UdpTransportTarget class represents an Agent accessible through UDP domain transport.

传输配置对象是传输域相关的。UdpTransportTarget类代表一个可以通过UDP传输到达的Agent。

class UdpTransportTargettransportAddr )

Create an object representing a single Agent accessible through UDP socket.

必须的参数transportAddr指定目标Agent的地址,格式为由FQDN、端口组成的二元tuple,其中FQDN是字符串,而端口是整数。(这里的FQDN就是ip地址,或者是'localhost'这样可以解析为ip地址的主机名)。


产生PySNMP中使用的OID:

from pysnmp.proto.rfc1902 import ObjectName
oid = ObjectName( '1.2.3.4.5.6' )
以后在使用OID的地方就可以用变量oid了。

阶段一嵌入式项目实践

-
  • 1970年01月01日 08:00

PySNMP学习笔记(二)

原文地址:PySNMP学习笔记(二)作者:MichaelLing83关于getCmd的返回值。 The varBinds is a tuple of Managed Objects. Managed...
  • esonbest1234
  • esonbest1234
  • 2016-02-24 11:45:19
  • 354

pysnmp学习(一)

安装pysnmp: 编译安装的话,pysnmp需要用到asn.1,安装pysnmp的话需要先安装asn.1,不过我没有安装成功。 也可以使用easy_install pysnmp安...
  • shangzhihaohao
  • shangzhihaohao
  • 2011-11-19 23:15:27
  • 7987

PySNMP官方文档翻译---常用操作

常用操作在这个教程里,我们将会逐渐学习创建并运行一些不同的SNMP命令请求和通告。我们将使用PySNMP同步的使用最简单的高级API创建SNMP Engine在PySNMP里,SNMP Engine是...
  • u014793472
  • u014793472
  • 2016-09-23 17:34:59
  • 2422

PySNMP--GET command

GET commandpysnmp.hlapi.getCmd(snmpEngine, authData, transportTarget, contextData, *varBinds, **opti...
  • u014793472
  • u014793472
  • 2017-02-23 10:25:53
  • 359

ubuntu14.04 使用pysnmp SNMP trap 接受

下载 安装pysnmp-4.2.5.tar.gz (md5) https://pypi.python.org/pypi/pysnmp/ from pysnmp.carrier.asynso...
  • cauckfgf
  • cauckfgf
  • 2015-07-02 10:59:38
  • 1262

PySNMP扩展snmp-trap

pysnmp是用python语言开发的snmp开源项目,感觉没有net-snmp强大。但如果你只开发snmp 客户端的 trap,那么用pysnmp还是很简单的。 1、安装下载pysnmp和pyasn...
  • sealyao
  • sealyao
  • 2009-09-12 10:18:00
  • 7190

python利用pysnmp获取交换机级联接口

交换机里有一个arp表,利用arp表可以找到与其相连的交换机的mac地址,然后再从mac端口对应表里找出端口 def getTrunk(ip,port,agent,communication...
  • shangzhihaohao
  • shangzhihaohao
  • 2011-11-30 22:05:18
  • 5307

pysnmp的安装

pysnmp的安装   pysnmp依赖两个第三方的python库: (1) ASN.1 : Structure of Management Information:管理信息结构 用于定义...
  • yshh126
  • yshh126
  • 2015-07-16 17:30:19
  • 856

pysnmp安装

pysnmp依赖两个第三方的python库: (1) ASN.1 : Structure of Management Information:管理信息结构 用于定义通过网络管理协议可访问的...
  • wujingwen1111
  • wujingwen1111
  • 2013-12-26 18:37:26
  • 1078
收藏助手
不良信息举报
您举报文章:PySNMP学习笔记(一)
举报原因:
原因补充:

(最多只允许输入30个字)