2014-04-15 28 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。