2015-10-06 78 views
0

问题我发送SNMPTRAP使用下面的命令pysnmp prettyPrint()上的十六进制数

须藤SNMPTRAP -v2c -c公共 '' .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()返回的十六进制值从两个连续的0图案去除一个0的部分。所以如果打印值使用打印值,我会得到0x34e2fd60a84。但我会除了得到0x34e2fd600a84

+1

目前尚不清楚pysnmp如何参与您的情况。一些代码肯定会有所帮助。另一方面,前导0是一个格式属性,它不应该改变有问题的值。 –

+0

请参阅更新后的问题 –

回答

1

这是pyasn1中的一个bug,它在0.1.3版本(当前版本为0.1.9)中被修复。如果由于某种原因无法升级,您需要升级您的pyasn1或猴子补丁。

+0

将版本升级到0.1.9后,按预期工作。谢谢 –