我想获得有关选择接口列表的所有信息。目前我有一个变量oid_base
oid_base = ['1.3.6.1.2.1.2.2.1.1.',
'1.3.6.1.2.1.2.2.1.2.',
'1.3.6.1.2.1.2.2.1.3.',
...,
'1.3.6.1.2.1.2.2.1.22.']
和接口列表(我想查询大约20个中的几个)
interfaces = ['35', '37', '94']
为了获得我想要的数据,我循环遍历接口并为每个传递给oid_args
的接口创建cmdgen.getCmd
:
for interface in snmpif.interfaces():
oid_args = [str(b + interface) for b in oid_base]
ei, es, ein, var_binds = cmd_gen.getCmd(sec_obj, trans, *oid_args)
# Handle errors and output of `var_binds`
是否有办法批量查询所有接口并返回表格。
我尝试过玩cmdgen.bulkCmd
,但我无法弄清楚如何选择接口。
答案 0 :(得分:1)
假设您正在尝试优化SNMP通信的数量,您可以使用getBulk()但是对于相邻接口的池。例如,如果你必须查询接口2,3,4你可以为接口1做getBulk(),将maxRepetitions和maxRows参数设置为3(要查询的接口数量)。
那些孤立的'接口可以通过将它们放在oid_args的开头并相应地设置getBulk的nonRepeaters选项来单独查询。
无论SNMP请求类型如何,您都可以将尽可能多的OID填入请求中,因为SNMP数据包可以容纳,而不一定只包含属于单个接口的OID。