|
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.

Comentários
Comente só assim vamos crescer juntos!