1

我想获取有关选择的接口列表的所有信息。目前我有一个变量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但我不知道如何选择接口。

4

1 回答 1

1

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

可以通过将这些“隔离”接口放在 oid_args 的开头并相应地设置 getBulk 的 nonRepeaters 选项来单独查询这些接口。

无论 SNMP 请求类型如何,您都可以将尽可能多的 OID 填充到 SNMP 数据包可以容纳的请求中,而不必只是那些属于单个接口的 OID。

于 2014-04-21T05:51:50.540 回答