有一组 snmp 陷阱 OID,来自不同的供应商设备,如 Cisco/Juniper/Arista 等...
例如:1.3.6.1.4.1.6101.1.8.8.2.1
我们想知道每个 OID 的陷阱名称。有超过 300 个 OID。
以编程方式,我们使用 python 将所有陷阱 OID 存储在集合中。
检索陷阱名称的最佳方法是什么?是否有任何公共存储库提供陷阱 OID 到陷阱名称的映射?
您可以在所有 MIB 上运行mibbuild.py --destination-format json工具。您将为每个 MIB 文件获得一个 JSON 文档。JSON 文档将如下所示:
"coldStart": {
"name": "coldStart",
"oid": "1.3.6.1.6.3.1.1.5.1",
"class": "notificationtype",
"status": "current"
},
从这里您可以将 JSON 加载到 Python 中,创建一个新的dict
类似{json[key]['oid']: key for key in json}
对象,您可以使用它来按 OID 查找 TRAP 名称。
如果您的 MIB 集合正在更改并且需要不断更新,您可以通过调用pysmi函数将上述过程构建到您的应用程序中。
编辑:
如果您需要将任何 TRAP OID 解析为其 MIB 名称,您可以在 Internet 上获取尽可能多的 MIB,并在它们上运行上述过程。但是,您仍然可能无法解析在野外遇到的所有 TRAP OID。更典型的做法是为您的软件管理的所有设备配备 MIB。
该mibdump
工具的默认设置是从http://mibs.snmplabs.com/asn1/站点提取请求的 MIB。
1.3.6.1.4.1.6101.1.8.8.2.1==>
1.3.6.1.4.1。== ...私营企业(值得记住)
6101 == Trend Micro Inc. 的 private.enterprise 编号,这些编号保存在https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
1.8.8.2.1 == 将需要获取 MIB,最好直接从 Trend Micro, Inc. 获取。
--显然,您需要加载所有需要解码的 MIB 才能使 python 工作。MIB 也可以引用其他 MIB,因此会变得混乱。我一直只是手动完成,所以我不能谈论任何工具来做到这一点。但我不需要对 SNMP 做太多事情。你的情况可能会有所不同。