Задача: необходимо получить статусы портов одним массивом, одной командой.
Решение: используем bulkCmd:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
def GetArrayPortStatus(ip,comm,oid): rez=None for errorIndication, errorStatus, \ errorIndex, varBinds in bulkCmd( SnmpEngine(), CommunityData(comm), UdpTransportTarget((ip, 161)), ContextData(), 0, 50, # GETBULK specific: request up to 50 OIDs in a single response ObjectType(ObjectIdentity('1.3.6.1.2.1.2.2.1.8')), lookupMib=False, 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: print(' = '.join([x.prettyPrint() for x in varBind])) return rez |