首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改或个性化OID

更改或个性化OID
EN

Stack Overflow用户
提问于 2022-08-19 15:22:01
回答 1查看 78关注 0票数 0

最后,让我的RPI计算机模块与SNMP一起工作。我有一个正在运行的脚本,它给了我一个参数,如果我使用SNMP查询,我就会得到信息。

代码语言:javascript
复制
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文件上看到的那样?

EN

回答 1

Stack Overflow用户

发布于 2022-08-21 06:59:22

如果在命令行中执行此操作,请使用

代码语言:javascript
复制
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字段,它将指向nsExtendConfigEntryINDEX fornsExtendConfigEntrynsExtendToken,它有一种DisplayString类型(基本上是一个仅限于人类可读的字符的OCTET STRING )。

下面是我如何用Python实现这一目标的一个例子--您需要pip install snmp

代码语言:javascript
复制
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}")

这是输出:

代码语言:javascript
复制
Index = OctetString(b'snmp_status')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73418973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档