Ultimas do CanalQb

Python - SNMP - Usando OIDs

Python - SNMP - Usando OIDs
Canal Qb

Para incluir essas informações ao seu script, você precisa identificar as OIDs correspondentes para cada uma das informações que deseja obter. Você pode fazer isso consultando a documentação do fabricante da impressora ou usando uma ferramenta de descoberta de SNMP, como o SNMP Walk.

Depois de identificar as OIDs, você pode adicionar um novo objeto ObjectType para cada uma delas e extrair os valores correspondentes a partir da resposta SNMP. Aqui está um exemplo de como você pode fazer isso:
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)

 Observe que as OIDs que usei são apenas exemplos

Nenhum comentário

Comente só assim vamos crescer juntos!

Observação: somente um membro deste blog pode postar um comentário.