【问题标题】:SNMP OIDs under python, trying to get MACs connected to a switchpython下的SNMP OID,试图让MAC连接到交换机
【发布时间】:2012-08-28 02:20:30
【问题描述】:

我正在尝试使用 snmpwalk 在 python 中创建一个脚本,以获取连接到我的交换机的当前设备以及它们使用的端口(我获取 MAC 地址,然后,使用我拥有的数据库,我将转换为IP 或主机名)。

嗯,一切正常,但我意识到此信息的 OID 编号在某些开关之间会发生变化。

我正在尝试获取此 OID:1.3.6.1.2.1.17.4.3.1.2

这很好,我得到了 MAC 和端口号。

但在我的一些开关中是这个:1.3.6.1.2.1.17.7.1.2.2 其他的是:1.3.6.1.2.1.17.4.3.1.2

我对此感到很困惑,我想知道我是否在寻找 OID 号码而不是名称方面做得很好。无论如何,我尝试使用某些名称(sysUpTime 等)查找信息,但 snmpwalk 不适用于名称(至少,它对我不起作用,我不确定我必须使用哪个名称来获取此信息)。例如,我试过:

$ snmpwalk -v 1 -c public sea-kmSwitch dot1dTpFdbPort
dot1dTpFdbPort: Unknown Object Identifier (Sub-id not found: (top) -> dot1dTpFdbPort)

我知道 python 中有 snmp 模块,但我没有找到好的文档和示例(pysnmp、pynetsnmp),所以我尝试使用 linux 命令来编写脚本。

所以,问题是:我如何知道我必须获得哪个 OID 号码?我可以使用任何 OID 名称吗?以及如何?

感谢和抱歉我的英语。

【问题讨论】:

    标签: python snmp oid


    【解决方案1】:

    您的程序无法使用 SNMP 名称,因为您没有导出放置 MIB 文件的路径以及您要使用的 MIB 文件列表。

    如果您想使用带有 NET-SNMP 框架的 Linux(即 snmpwalk 命令),请在执行脚本之前设置以下环境变量:MIBDIR 和 MIBS。

    export MIBDIR=<path_to_mib_files>
    export MIBS=ENTITY-MIB:SNMPv2-TC:<any_other_mibs_you_need>
    

    您可以在运行时直接在脚本中导出这些变量,就在使用 OID 以 SNMP 名称形式(即 sysLocation.0 而不是 1.3.6.1.2.1.1.6.0)调用任何命令之前。

    请注意,您必须为 MIB 变量定义比要求更广泛的 MIB 文件集 - 这是因为您的特定 MIB 文件很可能使用一些基于 RFC 的 MIB 文件。要确定您需要导出哪些 MIB 文件,请查看您感兴趣的 MIB 中的 IMPORTS 部分。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多