最后,让我的RPI计算机模块与SNMP一起工作。我有一个正在运行的脚本,它给了我一个参数,如果我使用SNMP查询,我就会得到信息。
pi@raspberrypi:~ $ snmpwalk -v2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects | grep snmp_status
NET-SNMP-EXTEND-MIB::nsExtendCommand."snmp_status" = STRING: /home/pi/BDC/snmp_status.py
NET-SNMP-EXTEND-MIB::nsExtendArgs."snmp_status" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendInput."snmp_status" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."snmp_status" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."snmp_status" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."snmp_status" = INTEGER: run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."snmp_status" = INTEGER: permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."snmp_status" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."snmp_status" = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."snmp_status" = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."snmp_status" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."snmp_status" = INTEGER: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."snmp_status".1 = STRING: 0如果我的单位处于警报状态,则使用NET-SNMP-EXTEND-MIB::nsExtendOutLine."snmp_status".1 = STRING: 1,如果没有,则用NET-SNMP-EXTEND-MIB::nsExtendOutLine."snmp_status".1 = STRING: 0来回复
此状态存储在文件中,并使用python脚本将其解析为SNMP。
现在..。下一个问题。SNMP服务器为我提供了以下OID .1.3.6.1.4.1.8072.1.3.2.3.1.2.11.115.110.109.112.95.115.116.97.116.117.115
对于每个参数,它给了我一个非常不同的IOD。
我怎么才能改变这个更简单的..。就像我们在MIB文件上看到的那样?
发布于 2022-08-21 06:59:22
如果在命令行中执行此操作,请使用
snmptranslate -m NET-SNMP-EXTEND-MIB .1.3.6.1.4.1.8072.1.3.2.3.1.2.11.115.110.109.112.95.115.116.97.116.117.115若要完全以编程方式(即不解析命令行输出)执行此操作,您需要一种解析MIB文件的方法。我认为这种工具可能存在于Python中,但我从未使用过它们。
更常见的情况是,我为我感兴趣的OID编写了硬代码常量,并手动检查MIB,以了解如何为每个对象解码索引。您提供的OID是NET-SNMP-EXTEND-MIB::nsExtendOutputFull的一个实例,它属于nsExtendOutput1Entry。通常,*Entry类型将有一个INDEX字段,告诉您使用哪个字段作为该表的索引。在本例中,它有一个AUGMENTS字段,它将指向nsExtendConfigEntry。INDEX fornsExtendConfigEntry是nsExtendToken,它有一种DisplayString类型(基本上是一个仅限于人类可读的字符的OCTET STRING )。
下面是我如何用Python实现这一目标的一个例子--您需要pip install snmp
from snmp.types import OID, OctetString
nsExtendOutputFull = OID.parse(".1.3.6.1.4.1.8072.1.3.2.3.1.2")
oid = OID.parse(".1.3.6.1.4.1.8072.1.3.2.3.1.2.11.115.110.109.112.95.115.116.97.116.117.115")
nsExtendToken = oid.extractIndex(nsExtendOutputFull, OctetString)
print(f"Index = {nsExtendToken}")这是输出:
Index = OctetString(b'snmp_status')https://stackoverflow.com/questions/73418973
复制相似问题