2015-10-06 76 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後,按預期工作。謝謝 –