尝试使用MIB文本约定转换OID时发生PySNMP Short OID错误

2024-09-30 08:21:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用问题Translate OID value pairs from MIB textual convention using pysnmp中描述的方法根据MIB文本约定转换OID和OID值。在

使用测试OID和测试OID值,我的代码如下:

from pysnmp.smi import builder, view
from pysnmp.entity.rfc3413.oneliner import mibvar
from pysnmp.proto import rfc1902
from pyasn1.type import univ

mibBuilder = builder.MibBuilder()
mibPath = mibBuilder.getMibSources() + (builder.DirMibSource('/home/rong/NOP_Dev/test'),)
mibBuilder.setMibSources(*mibPath)
mibBuilder.loadModules('NORTEL-ALARM-EXT-MIB')
mibViewController = view.MibViewController(mibBuilder)

varName = mibvar.MibVariable(univ.ObjectIdentifier('1.3.6.1.4.1.562.29.6.1.1.1.1')).resolveWithMib(mibViewController)
print(varName.getMibNode().getSyntax().clone(1).prettyPrint())

当我运行我的代码时,我得到以下错误:

^{pr2}$

文本约定如下:

NnExtAlarmEventType ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
         "Nortel version of IANA Event Type"
    SYNTAX       INTEGER
          {
          other  (1),
          communicationsAlarm  (2),
          qualityOfServiceAlarm  (3),
          processingErrorAlarm  (4),
          equipmentAlarm  (5),
          environmentalAlarm  (6),
          integrityViolation  (7),
          operationalViolation  (8),
          physicalViolation  (9),
          securityServiceOrMechanismViolation  (10),
          timeDomainViolation (11)
          }

如果您能帮助解决这个错误,我们将不胜感激!在


Tags: 代码from文本importviewbuildermiboid
1条回答
网友
1楼 · 发布于 2024-09-30 08:21:18

我找不到NORTEL-ALARM-EXT-MIB,因此我无法重现您的问题。在

一般来说,该错误意味着您引用的OID(1.3.6.1.4.1.562.29.6.1.1.1.1)属于某个SNMP表。该表有index/index(index子句),其中一个索引的语法为nExtAlarmEventType(例如INTEGER)。但是您给出的OID是不完整的,因为它不包含编码该索引的所有子OID。解决方案是要么删除一些尾随的子类OID,要么再添加一些。在

也许pysnmp也应该在这方面进行强化,以忽略这种情况并按原样返回OID的未解析部分。在

顺便说一句,您可以考虑尝试使用latest pysnmp来简化代码。在

相关问题 更多 >

    热门问题