Advertisement
Rnery

Jump Server comentada..

Jan 6th, 2024
1,292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.79 KB | Source Code | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. from paramiko import SSHClient, AutoAddPolicy, ProxyCommand
  5. from json import load
  6.  
  7. class SSHManager:
  8.     def __init__(self, host, username, password, jump_host=None, jump_username=None, jump_password=None):
  9.         self.host = host
  10.         self.username = username
  11.         self.password = password
  12.         self.jump_host = jump_host
  13.         self.jump_username = jump_username
  14.         self.jump_password = jump_password
  15.         self.client = None
  16.         self.load_credentials()
  17.  
  18.     def load_credentials(self):
  19.         if self.jump_host:
  20.             self.client = SSHClient()
  21.             self.client.set_missing_host_key_policy(AutoAddPolicy())
  22.             self.client.connect(
  23.                 self.jump_host,
  24.                 username=self.jump_username,
  25.                 password=self.jump_password,
  26.             )
  27.  
  28.     def connect(self):
  29.         try:
  30.             if not self.client:
  31.                 self.client = SSHClient()
  32.                 self.client.set_missing_host_key_policy(AutoAddPolicy())
  33.                 if self.jump_host:
  34.                     proxy_cmd = ProxyCommand(f"ssh -q -W %h:%p {self.jump_host}")
  35.                     self.client.connect(
  36.                         self.host,
  37.                         username=self.username,
  38.                         password=self.password,
  39.                         sock=proxy_cmd,
  40.                     )
  41.                 else:
  42.                     self.client.connect(
  43.                         self.host,
  44.                         username=self.username,
  45.                         password=self.password,
  46.                     )
  47.         except Exception as e:
  48.             raise RuntimeError(f"Erro ao conectar: {e}")
  49.  
  50.     def execute_command(self, command):
  51.         try:
  52.             _, stdout, _ = self.client.exec_command(command)
  53.             return stdout.read().decode('utf-8')
  54.         except Exception as e:
  55.             raise RuntimeError(f"Erro ao executar comando: {e}")
  56.  
  57.     def close(self):
  58.         if self.client:
  59.             self.client.close()
  60.  
  61. def ler_ips_do_arquivo(nome_arquivo):
  62.     with open(nome_arquivo, 'r') as file:
  63.         return [line.strip() for line in file.readlines()]
  64.  
  65. def main():
  66.     try:
  67.         # Substitua pelos dados do seu servidor intermediário (jump server)
  68.         jump_host = 'jump_server_ip'  # IP do servidor intermediário
  69.         jump_username = 'user1'        # Nome de usuário do servidor intermediário
  70.         jump_password = 'passw1'        # Senha do servidor intermediário
  71.        
  72.         arquivo_ips = 'ips.txt'          # Substitua pelo nome do seu arquivo de IPs
  73.         arquivo_comandos = 'comandos.txt'  # Substitua pelo nome do seu arquivo de comandos
  74.  
  75.         ips = ler_ips_do_arquivo(arquivo_ips)
  76.         comandos = [line.strip() for line in open(arquivo_comandos, 'r').readlines()]
  77.  
  78.         total_roteadores = len(ips)
  79.         roteadores_acessados = 0
  80.         roteadores_nao_acessados = 0
  81.  
  82.         with open('relatorio.txt', 'w') as relatorio:
  83.             for ip in ips:
  84.                 try:
  85.                     # Substitua pelos dados do seu roteador final
  86.                     ssh_manager = SSHManager(
  87.                         ip,
  88.                         username='user2',   # Nome de usuário do roteador final
  89.                         password='passw2',   # Senha do roteador final
  90.                         jump_host=jump_host,
  91.                         jump_username=jump_username,
  92.                         jump_password=jump_password
  93.                     )
  94.                     ssh_manager.connect()
  95.  
  96.                     resultados = [ssh_manager.execute_command(comando) for comando in comandos]
  97.  
  98.                     if len(resultados) >= 2:  # Verificar se há pelo menos dois elementos na lista resultados
  99.                         roteadores_acessados += 1
  100.                         relatorio.write(f'{ip} - LOG OK\n')
  101.  
  102.                         with open(f'ANTES_{ip}.log', 'w') as log_antes:
  103.                             log_antes.write(resultados[0])  # Supondo que o resultado do primeiro comando seja o log antes
  104.  
  105.                         with open(f'DEPOIS_{ip}.log', 'w') as log_depois:
  106.                             log_depois.write(resultados[1])  # Supondo que o resultado do segundo comando seja o log depois
  107.  
  108.                     ssh_manager.close()
  109.  
  110.                 except RuntimeError as e:
  111.                     roteadores_nao_acessados += 1
  112.                     relatorio.write(f'{ip} - LOG NOK - {e}\n')
  113.  
  114.         relatorio.write(f'\nNúmero de roteadores: {total_roteadores}\n')
  115.         relatorio.write(f'Roteadores acessados: {roteadores_acessados}\n')
  116.         relatorio.write(f'Roteadores não acessados: {roteadores_nao_acessados}\n')
  117.  
  118.     except Exception as e:
  119.         print(f"Erro: {e}")
  120.  
  121. if __name__ == "__main__":
  122.     main()
  123.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement