找回密码
 立即注册
搜索
热搜: SDN 云计算 H3C
查看: 730|回复: 0

linux - SNMP 陷阱,所需的 OID : sysuptime and oid

[复制链接]

57

主题

13

精华

8

回帖

管理员

体力
314 卡
贡献
161 个
金币
256 枚
注册时间
2018-8-25
最后登录
2025-3-1

活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老最佳新人

发表于 2023-7-16 21:48:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我正在尝试了解 SNMP 陷阱的格式。我正在将一段代码从 Windows 移植到发送 SNMP 陷阱的 Linux。 Windows 代码使用内置库(一些函数包括 SnmpStartup、SnmpSetRetransmitMode。可能称为 WinSNMP),因此在移植到 Linux 时无法保留该代码。


我发现了一个名为 SNMP++ 的不错的库,它能够轻松发送 SNMP 陷阱。


据我了解,SNMP 陷阱的前两个变量绑定(bind) (vb) 字段必须符合特定格式。第一个 vb 是系统运行时间(基本上是陷阱的时间戳),它具有众所周知的 OID 1.3.6.1.2.1.1.3.0。


第二个vb是陷阱的ID。我在任何地方都找不到关于它的任何文档,但是 SNMP++ 为陷阱的 ID 提供了 1.3.6.1.6.3.1.1.4.1.0 的 OID(它的值是我们的陷阱的 OID正在发送)。它使用 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 给出了结果,但他们没有解释它的用途。


最佳答案


对于任何 SNMP 问题,请从 IETF SNMP RFC 文档开始。显然 TRAP v2 必须具有两个对象,如 RFC 3416 第 22 页所述,


https://www.rfc-editor.org/rfc/rfc3416#page-22


我只能说如果 WinSNMP 不符合约定,它不符合标准,应该由 Microsoft 修复。



关于linux - SNMP 陷阱,所需的 OID : sysuptime and id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20549332/

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表