我试图检索snmp表中的一些列。根据代理的权限,有时不会返回列。当发生这种情况时,下一个有效响应的OID在varBindTable中被复制。在
是否有任何标记或平面表示该行不包含我所请求的内容? 我的应用程序希望结果与输入相同。在
程序员应该如何注意到数据有问题。在
让我们从一个例子开始: 这是高级同步版本。我正在抓取一个表,其中的行数及其索引事先不知道。在
from pysnmp.entity.rfc3413.oneliner import cmdgen
cmdGen = cmdgen.CommandGenerator()
errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd(
cmdgen.CommunityData('public', mpModel=0),
cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
'somewhere.1',
'somewhere.2,
'somewhere.3,
)
假设1和3存在,2不存在。 我们还假设这些是索引行为10和20的表的一部分。 在varbind中应该是什么?在
^{pr2}$或者
[ ['somewhere.1', 'Result1'],
[None, None],
['somewhere.3', 'Result3'] ]
我拿到第一个。如果我有第二个就好了。重复垃圾数据的意义何在?在
当某个OID不可用时,代理将跳过该OID并继续处理它拥有的下一个OID。在
所以,如果您的代理有OID 1、2和3,当允许访问所有这些OID时,您请求GETNEXT 1和2,您将收到2和3作为响应。当对oid2的访问被拒绝时,您请求GETNEXT 1和2,您将收到3和3(因为2被代理跳过)。在
为了证明这一点,您可以启用pysnmp调试并查看管理器和代理之间实际交换了哪些oid。在
若要查找特定的OID并希望查看它是否可用,只需使用GET request,代理将以值或错误响应。在
相关问题 更多 >
编程相关推荐