私が望んでいるのは、ネットワーク機器の 1 つが行うのと同じように、snmp トラップを送信することです。トラップには DataTime の名前値が含まれており、HEX 文字列のようなものです。
e.g. 1.3.6.1.4.1.193.82.1.8.1.4.0 : 07:de:07:10:0a:0c:1e:00:2b:08:00
snmptrap
のコマンドを使用してトラップを送信すると、ネットワーク機器から実際のトラップを取得したようにnet-snmp
、トラップ デコーダーが 16 進文字列を正常に解析してdateandtime
format( ) に変換できます。YYYY-MM-HH hh:mm:ss
私が使用するコマンドは次のようなものです。
sudo /usr/local/net-snmp/bin/snmptrap -v 2c -c LI_OSS 10.184.74.66:162 "" 1.3.6.1.4.1.193.82.2.0.1 1.3.6.1.4.1.193.82.1.8.1.4.0 x "07de07100a0c1e002b0800"
x
文字列 " 07de07100a0c1e002b0800
" がある種の 16 進形式であることを意味します。
pysnmp を使用して同じタスクを完了しようとすると、トラップ デコーダ プログラムはトラップを受信しましたが、日付と時刻の解析に失敗します。トラップを送信するために使用するコードは次のとおりです。これは pysnmp の公式の例です。
ホストと以下の部分のみを変更しました。
ntfOrg.sendNotification(
snmpEngine,
# Notification targets
'my-notification',
# Trap OID (SNMPv2-MIB::coldStart)
(1,3,6,1,4,1,193,82,2,0,1),
# ( (oid, value), ... )
(
('1.3.6.1.4.1.193.82.1.8.1.4.0', rfc1902.OctetString('07de07100a0c1e002b0800'))
)
)
違いを理解するために、WireShark を使用してトラップを送信するパッケージをキャプチャしました。ここに違いがありsnmptrap
ます。pysnmp
私は同じ TRAP OID を使用していませんが、現象は同じままであることに注意してください。
最初の写真は snmptrap を使用してトラップを送信したもので、もう 1 つは pysnmp を使用した場合です。オクテット ストリングスはまったく異なります。なぜこれが起こったのか誰か知っていますか?また、私の状況でpysnmpを使用してトラップを送信するにはどうすればよいですか? よろしくお願いします!