我正在尝试使用思科提供的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
答案 0 :(得分:0)
您引用的SNMPv2-SMI文件已经从原始/标准修改为使用特定于SMIC编译器的特殊语法(那些“SMI”关键字,如“SMI Counter32”),根据开头的注释: / p>
-- Converted to SMIC format.
根据任何其他解析器/编译器,这是破坏的语法(不再有效的SMIv1或SMIv2),因此错误。您应该只将mIB添加到您需要的尚未提供的net-snmp(如SNMPv2-SMI应该),并且应该使用标准语法,而不是编译器特定的扩展(除非它们在注释中实现)。