我已经通过在SnmpContext类实例上配置两个不同的上下文名称来编写SNMP代理代码。它将在特定的contextName下注册一个MIB树,如下所示,
class Test():
def readVars (self , varBinds, acInfo=(None, None)):
retItem = []
for ov in varBinds:
if str(ov[0]) == '1.3.6.1.4.1.26262.1.1.1.0':
retItem.extend([(ov[0], v2c.OctetString('%s' % 'value1'))])
elif str(ov[0]) == '1.3.6.1.4.1.26262.1.1.2.0':
retItem.extend([(ov[0], v2c.OctetString('%s' % 'value2'))])
.
.
.
return retItem
def readNextVars (self , varBinds, acInfo=(None, None)):
retItem = []
for ov in varBinds:
if str(ov[0]) == '1.3.6.1.4.1.26262.1.1.1.0':
retItem.extend([('1.3.6.1.4.1.26262.1.1.2.0', v2c.OctetString('%s' % 'value2'))])
elif str(ov[0]) == '1.3.6.1.4.1.26262.1.1.2.0':
retItem.extend([('1.3.6.1.4.1.26262.1.1.3.1.1.0', v2c.OctetString('%s' % 'value3'))])
.
.
.
.
else:
retItem.extend([('1.3.6.1.4.1.26262.1.1.1.0', v2c.OctetString('%s' % 'value1'))])
return retItem
mibTreeA = Test()
snmpContext.registerContextName(v2c.OctetString('context-a'), mibTreeA)
snmpContext.registerContextName(v2c.OctetString('context-b'), mibTreeA)
如示例sample
这里,通过使用if语句检查条件来返回下一个OID。但是我有多个OID,使用if语句增加它会很痛苦。
所以我想知道是否有一种方法可以动态地增加OID?任何示例脚本都将有所帮助。
提前感谢。
[可能是另一种方法是让dict的OID值对(其中值可以是可调用的,那么.nextKey
方法将做增量部分?
换句话说,可能所有的if
条件都可以折叠成某种顺序的数据结构,基本上支持两种操作: