将 pysnmp 用于 Juniper OID(带八位字节)

Using pysnmp for Juniper OIDs (with octets)

Juniper knowledge base 说你可以点击 jnxOperatingCPU.x.x.x.x 来获取设备的内存使用情况,x.x.x.x 是 "the last 4 octets",在我的例子中是“9.1 .0.0".

我似乎无法使用 pysnmp 的 getCmd() 方法获得这样的结果。我有 JUNIPER-MIB,但是脚本 returns:

No symbol JUNIPER-MIB::jnxOperatingCPU.9.1.0.0 at < pysnmp.smi.builder.MibBuilder object at 0x198b810>

我有另一个可以访问此 OID 的 SNMP 监视工具,因此我知道它在此设备上有效。我也可以使用完整的数字 OID 来获取值,但我更愿意使用漂亮的名称。

有人可以举例说明如何将这样的 OID 与 pysnmp.hlapi 一起使用吗?

从错误消息来看,您似乎错误地使用了 ObjectIdentity class(尽管粘贴代码片段会有所帮助)。

根据 JUNIPER-MIBjnxOperatingCPU 对象属于具有这些索引的 jnxOperatingTable table:

jnxOperatingEntry OBJECT-TYPE
    SYNTAX      JnxOperatingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry of operating status table."
    INDEX   { jnxOperatingContentsIndex,
              jnxOperatingL1Index,
              jnxOperatingL2Index,
              jnxOperatingL3Index }
    ::= { jnxOperatingTable 1 }

所有四个索引都是Integer32类型。

因此试试这个:

ObjectIdentity('JUNIPER-MIB', 'jnxOperatingCPU', 9, 1, 0, 0)

这是 ObjectIdentity class 上的 documentation