我想了解SNMP陷阱的格式。我將一段代碼從windows發送到發送SNMP陷阱的linux。 Windows代碼使用內置庫(一些函數包括SnmpStartup,SnmpSetRetransmitMode,可能被稱爲WinSNMP),因此在移植到Linux時無法保留該代碼。SNMP陷阱,必需的OIDs:sysuptime和ID
我發現了一個名爲SNMP ++的好庫,它可以輕鬆發送SNMP陷阱。
根據我的理解,SNMP陷阱的前兩個變量綁定(vb)字段必須符合特定的格式。第一個vb是sysuptime(基本上是陷阱的時間戳),它具有衆所周知的OID 1.3.6.1.2.1.1.3.0
。
第二個vb是陷阱的ID。我在任何地方都找不到任何文檔,但是SNMP ++提供了一個OID爲1.3.6.1.6.3.1.1.4.1.0
(它的值是我們發送的陷阱的OID)的陷阱ID。它使用pdu.set_notify_id函數進行設置。
這是發送陷阱時必須存在的另一個衆所周知的OID嗎? Windows庫根本不使用這個OID。它將ID字段的OID設置爲我們發送的OID,所以OID和它的值被設置爲相同的東西。看起來它是通過手動完成的,所以原始編碼器可能不會很好地理解這種格式。
那麼,這些是正確的?
windows:
1.3.6.1.4.1.XXXX.2.1.51 -> 1.3.6.1.4.1.XXXX.2.1.51
SNMP++:
1.3.6.1.6.3.1.1.4.1.0 -> 1.3.6.1.4.1.XXXX.2.1.51
爲什麼我不能找到這個1.3.6.1.6.3.1.1.4.1.0
任何有價值的文檔?它似乎沒有在我讀過的任何RFC中。谷歌搜索OID給出了結果,但他們沒有解釋它的用途。
所以我想我可以假設snmpTrapOID.0相當於1.3.6.1.6.3.1.1.4.1.0。你鏈接的RFC會談到snmpTrapOID.0,但從來沒有說過它的價值。 –
顯然RFC3416指的是RFC3418。 'snmpTrapOID'在RFC3418中定義。 –