![]() |
Python - SNMP - Usando OIDs | |
Canal Qb |
Como usar OIDs SNMP para monitorar impressoras com Python
Para incluir informações detalhadas sobre uma impressora usando SNMP no seu script Python, é essencial identificar as OIDs (Object Identifiers) correspondentes a cada dado que deseja obter. Essas informações podem ser encontradas consultando a documentação oficial do fabricante da impressora ou utilizando ferramentas específicas para descoberta SNMP, como o SNMP Walk.
Exemplo prático: Consultando OIDs em Python
Após identificar as OIDs necessárias, você pode criar objetos ObjectType
para cada uma e extrair os valores na resposta SNMP. Confira o exemplo abaixo:
ip_address = '10.0.26.205' community_string = 'public' snmp_engine = SnmpEngine() # OID para o modelo da impressora oid_model = ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0) # OID para o número de série da impressora oid_serial = ObjectIdentity('SNMPv2-MIB', 'sysSerialNum', 0) # OID para o endereço IP da impressora oid_ip = ObjectIdentity('IP-MIB', 'ipAdEntAddr', 1, 4, 1, 10, 0, 26, 205) # OID para a máscara de sub-rede da impressora oid_mask = ObjectIdentity('IP-MIB', 'ipAdEntNetMask', 1, 4, 1, 10, 0, 26, 205) # OID para a versão de firmware da impressora oid_firmware = ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0) # OID para a bandeja de papel padrão da impressora oid_tray = ObjectIdentity('SNMPv2-SMI', 'enterprises', '674', '11', '1', '1', '6', '1', '0') # OID para o contador de páginas da impressora oid_pagecount = ObjectIdentity('SNMPv2-SMI', 'enterprises', '674', '11', '1', '1', '11', '1', '0') # Consulta SNMP para obter as informações da impressora errorIndication, errorStatus, errorIndex, varBinds = next( getCmd(snmp_engine, CommunityData(community_string), UdpTransportTarget((ip_address, 161)), ContextData(), ObjectType(oid_model), ObjectType(oid_serial), ObjectType(oid_ip), ObjectType(oid_mask), ObjectType(oid_firmware), ObjectType(oid_tray), ObjectType(oid_pagecount)) ) # Verifica se houve erro na consulta if errorIndication: print('Erro na consulta SNMP: %s' % errorIndication) elif errorStatus: print('Erro na consulta SNMP: %s at %s' % ( errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex) - 1][0] or '?' )) else: # Extrai os valores das OIDs model = varBinds[0][1].prettyPrint() serial = varBinds[1][1].prettyPrint() ip = varBinds[2][1].prettyPrint() mask = varBinds[3][1].prettyPrint() firmware = varBinds[4][1].prettyPrint() tray = varBinds[5][1].prettyPrint() pagecount = varBinds[6][1].prettyPrint() # Imprime as informações da impressora print('Modelo da impressora: %s' % model) print('Número de série: %s' % serial) print('Endereço IP: %s' % ip) print('Máscara de sub-rede: %s' % mask) print('Versão de firmware: %s' % firmware) print('Bandeja de papel padrão: %s' % tray) print('Contador de páginas: %s' % pagecount)
Importante: As OIDs usadas no exemplo são ilustrativas. Para obter resultados precisos, consulte a documentação específica do fabricante da sua impressora e utilize ferramentas de descoberta SNMP para identificar as OIDs corretas.
Sobre SNMP e monitoramento
O protocolo SNMP (Simple Network Management Protocol) é amplamente utilizado para monitorar dispositivos de rede, como impressoras, switches e roteadores. Com ele, é possível consultar diversos parâmetros importantes, como o estado do dispositivo, contadores de uso, status de hardware e muito mais.
Usar Python para automatizar consultas SNMP facilita a integração dessas informações em sistemas de monitoramento personalizados, painéis de controle e alertas.
Recursos úteis
- Documentação oficial do PySNMP – Biblioteca Python para manipulação SNMP.
- SNMP Walk – Para descobrir OIDs em dispositivos SNMP.
- RFC 1157 – Especificação oficial do SNMP.
Utilize essas referências para aprofundar seu conhecimento e garantir que seus scripts estejam alinhados com as melhores práticas de monitoramento de rede.