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

我应该如何处理这些SNMP mib文件解析错误?,snmp,net-snmp,mib,Snmp,Net Snmp,Mib,我正在尝试使用Cisco提供的mib文件,通过SNMP轮询我的交换机来理解获得的信息。这是SG300-52P,文件可以找到 在我将文件放在netsnmp的一个默认mib目录中之后,当我试图将其中一个描述解码为其数值以验证mib文件是否工作时,出现了多个错误。我曾想过解决这些问题,但它们太多了,所以我决定尝试使用这些文件中最简单的一个来处理netsnmp。我只将SNMPv2 SMI文件放在netsnmp的一个默认mib目录中(因为它是在错误中出现的,并且是一个没有依赖项的短文件;为了便于参考,我添

我正在尝试使用Cisco提供的mib文件,通过SNMP轮询我的交换机来理解获得的信息。这是SG300-52P,文件可以找到

在我将文件放在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文件验证程序检查文件,它对此表示反对

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

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

--      Converted to SMIC format.

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

net-snmp本身附带适当的MIB文档,如SNMPv2 SMI,所以你不需要使用思科有问题的产品。见鬼。为什么思科会提供这些文件呢?我如何确定他们的哪些文件好用,哪些应该扔掉?无论如何,对于NET-SNMP附带的一个,我得到了相同的错误。一些编译器自动跳过基本的MIB文档,因此即使提供了不正确的文档,也不会报告错误。但是,NET-SNMP是不可容忍的。切换到NET-SNMP版本后的错误是什么?您不能粗略地说它不工作。使用NET-SNMP提供的SNMPv2 SMI,此命令:
snmptranslate zeroDotZero
返回此错误:
zeroDotZero:未知对象标识符(未找到子id:(top)->zeroDotZero)
。我没有使用NET-SNMP中的MIB编译器,但请检查其他一些MIB编译器。还有一些其他的软件套件,特别是“MIB浏览器”,它们不那么挑剔。有些可以让你设置挑剔的程度。他们中的大多数人甚至都有GUI不幸的是,最初的海报并不在意对答案的评价。