pysnmp prettyPrint() 十六进制数问题

pysnmp prettyPrint() issue on hexadecimal number

我使用以下命令发送了 snmptrap

sudo snmptrap -v2c -c public '' .1.2.3.4.5.6.7.8.9 ifIndex i 2 ifAdminStatus i 1 1.3.6.1.4.1.9.9.599.1.3.1.1.1.0 x "0x34e2fd600a84"

我使用 prettyPrint() 来格式化 var 绑定中的输出值。问题是输出不包含前导零。所以结果输出类似于

so.org.dod.internet.private.enterprises 9.9.599.1.3.1.1.1.0 = 0x34e2fd60a84

结果输出比原来的输入少了一个0。这是 prettyPrint 中的错误还是我在这里遗漏了什么?

编辑

这是我的实现。在这个回调函数里面

# Callback function for receiving notifications
def cbFun(snmpEngine, stateReference, contextEngineId, contextName,varBinds, cbCtx):

我有这样的代码块:

for name, val in varBinds:
        oid, label, suffix = MIBView.getNodeName(name)
        oidLabel = ".".join(map(str, label))
        oidSuffix = ".".join(map(str, suffix))
        oid_string = oid.prettyPrint()
        value = val.prettyPrint()

部分 value = val.prettyPrint() returns 从两个连续的 0 模式中删除一个 0 的十六进制值。因此,如果使用打印值打印值,我将得到 0x34e2fd60a84。但我除了得到 0x34e2fd600a84.

这是 pyasn1 中的一个错误,在 0.1.3 版本中已修复(当前版本为 0.1.9)。如果由于某种原因无法升级,则需要升级 pyasn1 或对其进行猴子修补。