Ultimas do CanalQb

Python - Automatizando a Extração de Ramificações MIB de Impressoras Python 3.8.10 + pysnmp = Extraindo valores de MIB para TXT

@CanalQb


Automatizando a Extração de Ramificações MIB de Impressoras  Python 3.8.10 + pysnmp = Extraindo valores de MIB para TXT



CanalQb



Sempre crie uma frase de segurança única para jogos, Airdrops e qualquer outra coisa de origem desconhecida, em vez de usar sua carteira principal.



Para executar o Script, eu utilizei o Python 3.8.10: https://cb.run/3N24
Qualquer outra versão pode precisar de adaptação!

Hoje quero compartilhar com vocês um script Python super útil que desenvolvi para simplificar a extração das ramificações MIB de impressoras em rede. Esse script não apenas realiza consultas SNMP para obter informações das impressoras, mas também verifica se todos os módulos necessários estão instalados. Se algum módulo estiver faltando, ele instala automaticamente e reinicia o script. Vamos conferir como funciona?
import sys
import subprocess
import pkg_resources

# Lista dos pacotes necessários
required = {'pysnmp'}

# Verifica e instala os pacotes que não estão instalados
installed = {pkg.key for pkg in pkg_resources.working_set}
missing = required - installed

if missing:
    print(f"Instalando pacotes faltantes: {', '.join(missing)}")
    subprocess.check_call([sys.executable, '-m', 'pip', 'install', *missing])
    print("Pacotes instalados com sucesso. Reiniciando o script...")
    subprocess.check_call([sys.executable] + sys.argv)
    sys.exit()

# Importa os módulos após garantir que estão instalados
from pysnmp.hlapi import *

def retorno(host, oid, output_file):
    with open(output_file, 'w', encoding='utf-8') as f:
        for (errorIndication, errorStatus, errorIndex, varBinds) in nextCmd(SnmpEngine(),
            CommunityData('public'), UdpTransportTarget((host, 161)),
            ContextData(), ObjectType(ObjectIdentity(oid)),
            lookupMib=False, lexicographicMode=True):

            if errorIndication:
                error_msg = str(errorIndication)
                print(error_msg)
                print(error_msg, file=f)
                break

            elif errorStatus:
                error_msg = '%s at %s' % (errorStatus.prettyPrint(),
                    errorIndex and varBinds[int(errorIndex) - 1][0] or '?')
                print(error_msg)
                print(error_msg, file=f)
                break

            else:
                for varBind in varBinds:
                    cheia = '%s = %s' % varBind 
                    print(cheia)
                    print(cheia, file=f)

# Solicita o endereço IP ao usuário
endereco_ip = input("Digite o endereço IP da impressora: ")
output_file = input("Digite o nome do arquivo de saída: ")

# Chama a função retorno com o endereço IP fornecido pelo usuário
retorno(endereco_ip, '1.3.6.1.2.1.43.5.1.1.17.1', output_file)

Como Funciona?


Verificação de Módulos: O script começa verificando se o módulo pysnmp está instalado.
Instalação Automática: Se o módulo não estiver instalado, o script o instala automaticamente.
Reinício do Script: Após a instalação, o script se reinicia para garantir que todos os módulos necessários estejam disponíveis.
Execução do Comando SNMP: O script realiza a consulta SNMP e salva os resultados em um arquivo especificado pelo usuário.

Por Que Isso é Útil?


Automatização: Economiza tempo ao automatizar a instalação de dependências.
Facilidade de Uso: Simplifica o processo de configuração e execução de scripts SNMP, especialmente para aqueles que não estão familiarizados com a instalação de pacotes Python.
Gestão de Impressoras: Permite a extração fácil e eficiente das ramificações MIB das impressoras em rede, facilitando a administração e monitoramento desses dispositivos.

Espero que essa solução seja útil para vocês! Se tiverem dúvidas ou sugestões, fiquem à vontade para comentar.

Abraços e até a próxima!

Nenhum comentário

Comente só assim vamos crescer juntos!

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