【问题标题】:PySNMP Short OID Error Trying To Translate OIDs using MIB Textual ConventionsPySNMP Short OID 错误尝试使用 MIB 文本约定翻译 OID
【发布时间】:2015-01-29 04:46:58
【问题描述】:

我正在使用问题 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())

当我运行我的代码时,出现以下错误:

Traceback (most recent call last):
  File "./pysnmp_test.py", line 82, in <module>
    varName = mibvar.MibVariable(univ.ObjectIdentifier('1.3.6.1.4.1.562.29.6.1.1.1.1')).resolveWithMib(mibViewController)
  File "/home/rong/NOP_Dev/lib/python3.4/site-packages/pysnmp/entity/rfc3413/oneliner/mibvar.py", line 169, in resolveWithMib
    self.__indices = rowNode.getIndicesFromInstId(suffix)
  File "<string>", line 1076, in getIndicesFromInstId
  File "<string>", line 899, in setFromName
pysnmp.smi.error.SmiError: Short OID for index NnExtAlarmEventType()

文本约定如下:

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)
          }

非常感谢您帮助解决此错误!

【问题讨论】:

    标签: python snmp mib pysnmp


    【解决方案1】:

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

    通常,该错误意味着您引用的 OID (1.3.6.1.4.1.562.29.6.1.1.1.1) 属于某个 SNMP 表。该表具有索引/索引(INDEX 子句),其中一个索引具有 NnExtAlarmEventType 的语法(例如 INTEGER)。但是您给出的 OID 是不完整的,因为它不包含编码该索引的所有子 OID。解决方案是删除一些尾随的子 OID 或添加更多。

    可能 pysnmp 在这方面也应该加强以忽略这种情况并按原样返回 OID 的未解析部分。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多