web-dev-qa-db-ja.com

正しいsnmptrapコマンド形式は何ですか?

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がある場合とない場合がありますか?

実際には、これらの形式は両方とも機能しますが、どちらが正しいか、または違いは何ですか?

5
Kiran Mohan

トラップで「スカラー」または「テーブル行」に関連するvarbindが参照されているかどうかによって異なります。

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

このコマンドには、(snmpsetコマンドの場合と同じように)VARIABLES句にリストされているvarbindの(OID、type、value)トリプルも含まれていることに注意してください。

テーブル行の例。

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

Idは行を特定するifIndexによって処理されるため、変数バインディングに.0はありません。

スカラー行の例。

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'はスカラーです。

ifIndexで識別されるテーブル行に関連する上記のIF-MIB::linkDownの例とは異なり、ここでは.0sがendはスカラーを正確に示します(SETしたときのように)

元の質問からの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 }

つまり、notであり、実際の識別可能なアクセス可能なスカラーであるため、.0を使用しないことをお勧めします。

8
k1eran