我試圖使用bulkget命令生成器遍歷sysORTable,并使用基于示例的以下代碼:cmdGen = cmdgen.CommandGenerator()errorIndication, errorStatus, errorIndex, varBinds = cmdGen.bulkCmd( cmdgen.UsmUserData(user, authKey=authKey, privKey=privKey, authProtocol=authProto, privProtocol=privProto, securityEngineId=None ), cmdgen.UdpTransportTarget((sHost, 161)), 0 , 25, *[cmdgen.MibVariable(oid) for oid in sOID] )但是,從代理返回的結(jié)果超過(guò)了MIB查找強(qiáng)加的255個(gè)字符的限制。我發(fā)現(xiàn)了兩個(gè)解決此問(wèn)題的方法:更改DisplayStringpysnmp / smi / mibs / SNMPv2-TC.py中最大長(zhǎng)度的值:subtypeSpec = OctetString.subtypeSpec + ValueSizeConstraint(0, 512)使用以下命令在cmdgen中禁用MIB查找 lookupMib=False但是,這兩個(gè)修復(fù)程序雖然允許腳本完成,但似乎會(huì)截?cái)噍敵?。例如:[ObjectType(ObjectIdentity(<ObjectName value object at 0x7f1c04686cd0 tagSet <TagSet object at 0x7f1c0c88dad0 tags 0:0:6> payload [1.3.6.1.2.1.1.9.1.3.106]>), <DisplayString value object at 0x7f1c04623150 subtypeSpec <ConstraintsIntersection object at 0x7f1c04a64490 consts <ValueSizeConstraint object at 0x7f1c0756c510 consts 0, 65535>, <ValueSizeConstraint object at 0x7f1c04a64450 consts 0, 512>> tagSet <TagSet object at 0x7f1c0c88d5d0 tags 0:0:4> encoding iso-8859-1 payload [Agent capabiliti...B
File name: sys]>)]注意省略號(hào)和換行符。兩個(gè)問(wèn)題:如何解決輸出的截?cái)鄦?wèn)題?此消息的格式是什么,如何解壓縮?(與帶有鍵和值的標(biāo)準(zhǔn)get輸出完全不同)
1 回答

慕田峪4524236
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
首先,這似乎是您的SNMP代理中的錯(cuò)誤-它們不應(yīng)溢出字符串。從這個(gè)意義上講,pysnmp做得很好。;-)
要回答您的問(wèn)題:
省略號(hào)僅出現(xiàn)在中
repr()
,如果您使用str
或.prettyPrint()
在值上顯示,則不會(huì)發(fā)生本質(zhì)上,它是一個(gè)元組序列。每個(gè)元組是(名稱,值)。因此,要打印出內(nèi)容,您可以執(zhí)行以下操作:
:
for varBind in varBinds: print(' = '.join([x.prettyPrint() for x in varBind]))
可以在這里找到示例。
添加回答
舉報(bào)
0/150
提交
取消