net-snmp的snmp passpersist后端

snmp-passpersist的Python项目详细描述


SNMP密码列表

此模块是net-snmp的snmp passpersist后端。

snmp_passpersist.PassPersist类提供了一种方便的方法来创建mib子树并通过其passpersist协议将其公开给snmp。 使用两个线程,一个用于与snmpd对话,另一个用于以固定间隔触发更新进程。

已将关键字“dump”添加到协议中以进行测试。

安装

最简单的方法是使用pip:

pip install snmp_passpersist

如果运行python 2.x并看到此错误:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import snmp_passpersist as snmp
  File "/root/snmp_passpersist/snmp_passpersist.py", line 32, in <module>
    from builtins import str
ImportError: No module named builtins

安装future包来解决问题:pip install future

示例

用法示例:在文件/path/to/your/script.py中:

#!/usr/bin/python -uimportsnmp_passpersistassnmpdefupdate():pp.add_int('0.1',123,"This is a label for this integer")pp.add_str('0.2',"A string")pp.add_oct('0.3','01 00 1f 0b 00 0b')# MAC address as an octet stringpp=snmp.PassPersist(".1.3.6.1.3.53.8")pp.start(update,30)# Every 30s

使用net snmp的snmpd.conf中的以下行:

pass_persist    .1.3.6.1.3.53.8.0     /path/to/your/script.py

这里有一个真实的例子:https://github.com/nagius/cxm/blob/master/misc/snmp_xen.py

支持的类型及其帮助程序的列表

TypeHelper
Counter32add_cnt_32bit()
Counter64add_cnt_64bit()
GAUGEadd_gau()
INTEGERadd_int()
IPADDRESSadd_ip()
OBJECTIDadd_oid()
OCTETadd_oct()
STRINGadd_str()
TIMETICKSadd_tt()

特殊助手

标签

可以为每个条目添加一个标签,作为所有添加帮助程序的可选参数。 此标签不由net snmp使用,仅用于使用dump关键字进行调试。

添加oid()

此帮助程序允许您添加一个简单的oid字符串并为其指定适当的类型。例如,使用

pp.add_oid('.1.3.6.1.2.1.47','1.1.1.1.3.1','0.0')

其中“0.0”表示SNMPv2-SMI::zeroDotZero

当我们遍历此oid时,这将导致以下响应:

ENTITY-MIB::entPhysicalVendorType.1 = OID: SNMPv2-SMI::zeroDotZero

设置属性

您可以注册一个帮助程序以允许记录来自net snmp的值。

defmy_setter(oid,type,value):print("Received %s with value %s for oid %s."%(type,value,oid))returnTruepp.register_setter('.1.3.6.1.3.53.8.0.4',my_setter)

调试示例:

$ /path/to/your/script.py
set
.1.3.6.1.3.53.8.0.4
INTEGER 987
Received INTEGER with value 987 for oid .1.3.6.1.3.53.8.0.4.
DONE
set
.1.3.6.1.3.53.8.0.1
STRING some-random-useless-string
not-writable

“example/”目录中提供了另一个显示“set”功能用法的示例。

调试示例

在shell中运行上一个脚本并键入命令:

$ /path/to/your/script.py
PING
PONG
DUMP
{'0.1': {'type': 'INTEGER', 'value': '123'}}
get
.1.3.6.1.3.53.8
NONE
get
.1.3.6.1.3.53.8.0.1
.1.3.6.1.3.53.8.0.1
INTEGER
123
getnext
.1.3.6.1.3.53.8
.1.3.6.1.3.53.8.0.1
INTEGER
123

除了ping和dump,所有命令都在两行上键入:get<;enter>;.1.3.6.1.3.53.8.0.1<;enter>;。

学分

非常感谢所有的贡献者。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在java中模拟按键?   尽管元素存在,但HtmlUnit中的java ElementNotFoundException   在Java中,长双精度并发写入不是原子的吗?   java如何在另一个对象数组中打印对象的int值?   java在显示或更改视图后执行一些代码   java JFR:读取时发生OutOfMemoryError。jfr文件   java Android助手检查是否购买   java这种设计模式的好处是什么?   Weblogic 10.3中针对托管服务器的java部署问题   java如何获取字符串。在编译时投诉的格式   声明字符串数组时发生java错误   java JPA在多个并行线程中从表中删除时发生死锁   java Android:在按钮动画之后启动活动   java并发与JMS主题在春季   使用Lucene spatial search/DateRangePrefixTree进行java日期范围查询?   java可选接口问题   JavaDbUnit没有在每个方法之后清洗和插入数据库,所以测试不是独立的   java在IAIK PKCS11包装器中一对私钥和证书如何匹配?