6

以下哪项是snmptrap(net-snmp) 命令的正确格式?

snmptrap -v 2c -c public host "" NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification \
       netSnmpExampleHeartbeatRate i 123456

或者

snmptrap -v 2c -c public host "" NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification \
       netSnmpExampleHeartbeatRate.0 i 123456

即,.0在变量绑定中有或没有?

实际上这两种格式都有效,但哪一种是正确的,或者有什么区别?

4

1 回答 1

11

这取决于陷阱中是否引用了“标量”或“表行”相关的 varbind。

http://www.net-snmp.org/wiki/index.php/TUT:snmptrap状态:

请注意,此命令还包括 VARIABLES 子句中列出的 varbind 的 (OID,type,value) 三元组(与 snmpset 命令相同)。

表行示例。

snmptrap -v 2c -c public host:162 .1.3.6.1.6.3.1.1.5.3 .1.3.6.1.6.3.1.1.5.3    \
        ifIndex i 2 ifAdminStatus i 1 ifOperStatus i 1

以供参考 :

snmptranslate -m +ALL -Pu .1.3.6.1.6.3.1.1.5.3
IF-MIB::linkDown

变量绑定中没有.0,因为 id 由ifIndex精确定位行的 id 负责。

标量行示例。

http://www.net-snmp.org/wiki/index.php/TUT:snmptrap显示示例

snmptrap -v 1 -c public host UCD-TRAP-TEST-MIB::demotraps "" 6 17 "" \
       SNMPv2-MIB::sysLocation.0 s "Just here"

'SNMPv2-MIB::sysLocation.0' 是一个标量

IF-MIB::linkDown上面的示例不同,它与由ifIndex标识的表行相关,此处.0末尾的 s 精确定位标量(就像您设置它时一样)

来自原始问题的 Netsnmp 示例

mibs/NET-SNMP-EXAMPLES-MIB.txt状态

netSnmpExampleHeartbeatRate OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "A simple integer object, to act as a payload for the
         netSnmpExampleHeartbeatNotification.  The value has
         no real meaning, but is nominally the interval (in
         seconds) between successive heartbeat notifications."
::= { netSnmpExampleNotificationObjects 1 }

即它不是一个真实的、可识别的、可访问的标量,所以我建议 no .0

于 2013-11-14T14:29:38.643 回答