【问题标题】:Trap OID to trap name - snmp陷阱 OID 到陷阱名称 - snmp
【发布时间】:2023-10-09 00:26:01
【问题描述】:

有一组 snmp 陷阱 OID,来自不同的供应商设备,如 Cisco/Juniper/Arista 等...

例如:1.3.6.1.4.1.6101.1.8.8.2.1

我们想知道每个 OID 的陷阱名称。有 300 多个 OID。


我们使用 python 以编程方式将所有陷阱 OID 存储在集合中。

检索陷阱名称的最佳方法是什么?是否有任何公共存储库提供陷阱 OID 到陷阱名称的映射?

【问题讨论】:

    标签: python snmp pysnmp snmp-trap


    【解决方案1】:

    您可以在所有 MIB 上运行 mibbuild.py --destination-format json 工具。您将为每个 MIB 文件获得一个 JSON 文档。 JSON 文档将看起来像 like this:

    "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。

    【讨论】:

    • 对不起.. 我没有包含这些陷阱定义的 mib 列表.... 我不能依靠一些公共存储库来访问所有 MIBS 吗?
    • mibbuild 是否依赖 sme 公共源的 mib?
    • 即将推出一些非供应商的 mib OIDS,例如用于 syslog 的 CA sysedge 陷阱...我理解您的意思...
    • 好吧,不管 TRAP 的来源如何,获取 OID 语义(包括其名称)的唯一方法是在 MIB 中查找它......
    • 我掌握了位于文件夹及其子文件夹中的 mib 文件...使用 mibbuild 从所有子文件夹中选择所有 mib 文件的语法是什么?
    【解决方案2】:

    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 做太多事情。您的情况可能会有所不同。

    【讨论】: