我想了解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中定义。 –