2014-04-15 25 views
1

我想获取有关选择接口列表的所有信息。目前,我有一个变量oid_basePySNMP查询接口的选择列表

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'] 

得到我想要的,我经过界面循环中的数据和创造,我传给cmdgen.getCmd每个单独的接口的oid_args

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` 

有查询所有的接口在BU的一种方式lk并找回一张桌子。

我曾尝试玩cmdgen.bulkCmd,但我无法弄清楚如何选择接口。

+0

是否要将所有接口的信息作为一个大列表检索,然后仅选择那些您需要的信息? – Konstantin

+0

我只想检索有关我需要的接口的信息。有问题的路由器上有超过一千个接口。 –

回答

1

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

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

无论SNMP请求类型如何,您都可以在SNMP请求中包含尽可能多的OID,而不一定只包含那些属于单个接口的OID。