为了账号安全,请及时绑定邮箱和手机立即绑定

pysnmp不处理大字符串返回

pysnmp不处理大字符串返回

翻阅古今 2021-05-07 18:30:14
我试图使用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] )但是,从代理返回的结果超过了MIB查找强加的255个字符的限制。我发现了两个解决此问题的方法:更改DisplayStringpysnmp / smi / mibs / SNMPv2-TC.py中最大长度的值:subtypeSpec = OctetString.subtypeSpec + ValueSizeConstraint(0, 512)使用以下命令在cmdgen中禁用MIB查找 lookupMib=False但是,这两个修复程序虽然允许脚本完成,但似乎会截断输出。例如:[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]>)]注意省略号和换行符。两个问题:如何解决输出的截断问题?此消息的格式是什么,如何解压缩?(与带有键和值的标准get输出完全不同)
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

首先,这似乎是您的SNMP代理中的错误-它们不应溢出字符串。从这个意义上讲,pysnmp做得很好。;-)

要回答您的问题:

  1. 省略号仅出现在中repr(),如果您使用str.prettyPrint()在值上显示,则不会发生

  2. 本质上,它是一个元组序列。每个元组是(名称,值)。因此,要打印出内容,您可以执行以下操作:

for varBind in varBinds:    
print(' = '.join([x.prettyPrint() for x in varBind]))

可以在这里找到示例。


查看完整回答
反对 回复 2021-05-18
  • 1 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号