Я пытаюсь пройти по таблице с помощью PySNMP и получить только определенные поля. В настоящее время у меня есть следующий код, который работает хорошо.
def walkTable(community, hostname, port, tableName, fields):
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
CommunityData(community, mpModel=0),
UdpTransportTarget((hostname, port)),
ContextData(),
ObjectType(ObjectIdentity(tableName, 'ifAlias')),
ObjectType(ObjectIdentity(tableName, 'ifHCInOctets')),
ObjectType(ObjectIdentity(tableName, 'ifHCOutOctets')),
lexicographicMode=False):
if errorIndication:
print(errorIndication)
break
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex)-1][0] or '?'))
break
else:
for varBind in varBinds:
fooBar(varBind)
Приведенная выше функция принимает переменную с именем fields. Это строковый массив полей, которые я хотел бы извлечь из таблицы, но не могу понять, как это сделать динамически.
В настоящее время я пробовал
def walkTable(community, hostname, port, tableName, fields):
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
CommunityData(community, mpModel=0),
UdpTransportTarget((hostname, port)),
ContextData(),
for x in fields:
ObjectType(ObjectIdentity(tableName, x))
lexicographicMode=False):
if errorIndication:
print(errorIndication)
break
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex)-1][0] or '?'))
break
else:
for varBind in varBinds:
fooBar(varBind)
Что не работает. Есть ли способ динамически создать ObjectType для nextCmd()?