PySNMP查询选择的接口列表

时间:2014-04-15 13:29:49

标签: python snmp pysnmp

我想获得有关选择接口列表的所有信息。目前我有一个变量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,但我无法弄清楚如何选择接口。

1 个答案:

答案 0 :(得分:1)

假设您正在尝试优化SNMP通信的数量,您可以使用getBulk()但是对于相邻接口的池。例如,如果你必须查询接口2,3,4你可以为接口1做getBulk(),将maxRepetitions和maxRows参数设置为3(要查询的接口数量)。

那些孤立的'接口可以通过将它们放在oid_args的开头并相应地设置getBulk的nonRepeaters选项来单独查询。

无论SNMP请求类型如何,您都可以将尽可能多的OID填入请求中,因为SNMP数据包可以容纳,而不一定只包含属于单个接口的OID。