Advertisement
Rnery

Acessando SSH e gerando logs..

Jan 3rd, 2024
1,216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.85 KB | Source Code | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. from paramiko import SSHClient, AutoAddPolicy
  5.  
  6. class SSHManager:
  7.     def __init__(self, host, username, password):
  8.         self.host = host
  9.         self.username = username
  10.         self.password = password
  11.         self.client = None
  12.  
  13.     def connect(self):
  14.         try:
  15.             self.client = SSHClient()
  16.             self.client.set_missing_host_key_policy(AutoAddPolicy())
  17.             self.client.connect(self.host, username=self.username, password=self.password)
  18.         except Exception as e:
  19.             raise RuntimeError(f"Erro ao conectar: {e}")
  20.  
  21.     def execute_command(self, command):
  22.         try:
  23.             _, stdout, _ = self.client.exec_command(command)
  24.             return stdout.read().decode('utf-8')
  25.         except Exception as e:
  26.             raise RuntimeError(f"Erro ao executar comando: {e}")
  27.  
  28.     def close(self):
  29.         if self.client:
  30.             self.client.close()
  31.  
  32. def ler_ips_do_arquivo(nome_arquivo):
  33.     with open(nome_arquivo, 'r') as file:
  34.         return [line.strip() for line in file.readlines()]
  35.  
  36. def main():
  37.     try:
  38.         arquivo_ips = 'ips.txt'  # Substitua pelo nome do seu arquivo de IPs
  39.         arquivo_comandos = 'comandos.txt'  # Substitua pelo nome do seu arquivo de comandos
  40.  
  41.         ips = ler_ips_do_arquivo(arquivo_ips)
  42.         comandos = [line.strip() for line in open(arquivo_comandos, 'r').readlines()]
  43.  
  44.         total_roteadores = len(ips)
  45.         roteadores_acessados = 0
  46.         roteadores_nao_acessados = 0
  47.  
  48.         with open('relatorio.txt', 'w') as relatorio:
  49.             for ip in ips:
  50.                 try:
  51.                     ssh_manager = SSHManager(ip, 'seu_usuario', 'sua_senha')
  52.                     ssh_manager.connect()
  53.  
  54.                     resultados = [ssh_manager.execute_command(comando) for comando in comandos]
  55.  
  56.                     roteadores_acessados += 1
  57.                     relatorio.write(f'{ip} - LOG OK\n')
  58.  
  59.                     with open(f'ANTES_{ip}.log', 'w') as log_antes:
  60.                         log_antes.write(resultados[0])  # Supondo que o resultado do primeiro comando seja o log antes
  61.  
  62.                     with open(f'DEPOIS_{ip}.log', 'w') as log_depois:
  63.                         log_depois.write(resultados[1])  # Supondo que o resultado do segundo comando seja o log depois
  64.  
  65.                     ssh_manager.close()
  66.  
  67.                 except RuntimeError as e:
  68.                     roteadores_nao_acessados += 1
  69.                     relatorio.write(f'{ip} - LOG NOK - {e}\n')
  70.  
  71.         relatorio.write(f'\nNúmero de roteadores: {total_roteadores}\n')
  72.         relatorio.write(f'Roteadores acessados: {roteadores_acessados}\n')
  73.         relatorio.write(f'Roteadores não acessados: {roteadores_nao_acessados}\n')
  74.  
  75.     except Exception as e:
  76.         print(f"Erro: {e}")
  77.  
  78. if __name__ == "__main__":
  79.     main()
  80.  
Tags: python ssh
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement