我该如何处理这些SNMP mib文件解析错误?

时间:2015-07-23 10:44:44

标签: snmp net-snmp mib

我正在尝试使用思科提供的mib文件,通过SNMP轮询我的交换机来了解获取的信息。这是一个SG300-52P,文件可以找到here

将文件放入netsnmp的默认mib目录之后,当我尝试将其中一个描述解码为其数值以验证mib文件是否有效时,会出现多个错误。我考虑过解决问题,但是它们太多了,所以我决定尝试使用netsnmp中最简单的这些文件。我只将SNMPv2-SMI文件放在netsnmp的一个默认mib目录中(因为它出现在错误中并且是一个没有依赖项的短文件;我已经添加了内容以便于参考)并运行以下命令:

snmptranslate -m SNMPv2-SMI zeroDotZero

但是,这会返回以下两个错误:

Expected LAST-UPDATED (SMI): At line 35 in /home/buildmanager/.snmp/mibs/SNMPv2-SMI.my
zeroDotZero: Unknown Object Identifier (Sub-id not found: (top) -> zeroDotZero)

经过一些谷歌搜索和猜测,我继续使用这个在线mib文件验证器here检查文件,该文件反对

Line 34:
2   `SMI' should start with a lower case letter
1   syntax error, unexpected MODULE_IDENTITY, expecting OBJECT

我不知道该怎么做这些消息,谷歌搜索他们揭示了我无法理解的一切。这是否意味着我的文件实际上有错误?这是思科正式提供的文件,它非常基础 - 我无法想象会出现这种情况。 我确保我的系统上的其他任何地方都没有干扰SNMPv2-SMI,因此我确信这是netsnmp正在使用的文件。我怀疑这里有些东西我一般都不了解SNMP和这些mib文件,所以请指出正确的方向或告诉我在哪里以及如何寻找答案。谢谢!

SNMPv2-SMI的内容:

-- file: SNMPv2-SMI.my
-- Changes:
--      Converted to SMIC format.
-- dperkins@scruznet.com

SNMPv2-SMI DEFINITIONS ::= BEGIN

org             OBJECT IDENTIFIER ::= { iso 3 }
dod             OBJECT IDENTIFIER ::= { org 6 }
internet        OBJECT IDENTIFIER ::= { dod 1 }
directory       OBJECT IDENTIFIER ::= { internet 1 }
mgmt            OBJECT IDENTIFIER ::= { internet 2 }
mib-2           OBJECT IDENTIFIER ::= { mgmt 1 }
transmission    OBJECT IDENTIFIER ::= { mib-2 10 }
experimental    OBJECT IDENTIFIER ::= { internet 3 }
private         OBJECT IDENTIFIER ::= { internet 4 }
enterprises     OBJECT IDENTIFIER ::= { private 1 }
security        OBJECT IDENTIFIER ::= { internet 5 }
snmpV2          OBJECT IDENTIFIER ::= { internet 6 }

-- transport domains
snmpDomains     OBJECT IDENTIFIER ::= { snmpV2 1 }

-- transport proxies
snmpProxys      OBJECT IDENTIFIER ::= { snmpV2 2 }

-- module identities
snmpModules     OBJECT IDENTIFIER ::= { snmpV2 3 }



-- macros

SMI MODULE-IDENTITY
SMI OBJECT-IDENTITY
SMI OBJECT-TYPE
SMI NOTIFICATION-TYPE


-- types

SMI Counter32
SMI Counter64
SMI Gauge32
SMI Integer32
SMI IpAddress
SMI Opaque
SMI TimeTicks
SMI BITS
SMI Unsigned32


zeroDotZero    OBJECT-IDENTITY
    STATUS     current
    DESCRIPTION
            "A value used for null identifiers."
    ::= { 0 0 }

END

1 个答案:

答案 0 :(得分:0)

您引用的SNMPv2-SMI文件已经从原始/标准修改为使用特定于SMIC编译器的特殊语法(那些“SMI”关键字,如“SMI Counter32”),根据开头的注释: / p>

--      Converted to SMIC format.

根据任何其他解析器/编译器,这是破坏的语法(不再有效的SMIv1或SMIv2),因此错误。您应该只将mIB添加到您需要的尚未提供的net-snmp(如SNMPv2-SMI应该),并且应该使用标准语法,而不是编译器特定的扩展(除非它们在注释中实现)。