Skip to content

solopx/parallelios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 _______  _______  ______    _______  ___      ___      _______  ___            ___   _______  _______ 
|       ||   _   ||    _ |  |   _   ||   |    |   |    |       ||   |          |   | |       ||       |
|    _  ||  |_|  ||   | ||  |  |_|  ||   |    |   |    |    ___||   |          |   | |   _   ||  _____|
|   |_| ||       ||   |_||_ |       ||   |    |   |    |   |___ |   |          |   | |  | |  || |_____ 
|    ___||       ||    __  ||       ||   |___ |   |___ |    ___||   |___  ___  |   | |  |_|  ||_____  |
|   |    |   _   ||   |  | ||   _   ||       ||       ||   |___ |       ||   | |   | |       | _____| |
|___|    |__| |__||___|  |_||__| |__||_______||_______||_______||_______||___| |___| |_______||_______|

Fast, parallelized, and automated file deployment for remote devices.
tftp > [=======>file>--------] > devices

Python Tkinter License: MIT

Parallel.IOS

Uma ferramenta Python com interface gráfica (GUI) desenvolvida para automatizar a cópia e verificação de imagens IOS (ou outros arquivos) a partir de um servidor TFTP para a memória flash de múltiplos dispositivos Cisco. Este script otimiza o tempo e diminui o trabalho manual realizando as cópias de forma simultânea para diversos equipamentos.


Cenário Típico:

Chefe:

Precisamos atualizar a versão de firmware de todos os dispositivos de rede da empresa devido a uma vulnerabilidade crítica que foi descoberta ontem a noite!
🔴E PRECISO DISSO PRONTO ATÉ AS 17H!!🔴


Time de Infra/Redes(você, no caso!):

Screenshot 1
Ah shit! Here we go again!

O Problema:

Você tem 90 switches, um servidor TFTP e a paciência de um monge. O que você vai fazer? 😭 <--esse é você
Copiar os arquivos um por um manualmente não é "trabalho de infra", é castigo divino. É aquele momento onde você se pergunta se deveria ter estudado botânica ou se deveria ter entrado pro teatro.

A Solução? (Ou quase isso):

Esta ferramenta é um script Python com uma interface gráfica que fiz para que você não precise digitar copy tftp flash: até os seus dedos sangrarem.
Ele automatiza o tédio e faz o upload simultâneo para múltiplos dispositivos Cisco e depois(sim, tem mais!) da cópia ainda verifica se o arquivo foi copiado corretamente utilizando o hash MD5 dele. (porque a vida é curta demais para ficar acompanhando barras de progresso.)

O que ele faz? (além de salvar seu tempo):

  1. Multitarefa Real: Ele ataca vários dispositivos ao mesmo tempo. Enquanto o TFTP sofre fazendo todas as cópias, você finge que está lendo a documentação (na verdade você está vendo reels no Instagram).
  2. Verificação de espaço disponível: Cabe ou não cabe? Tem espaço livre ou não? Não importa! Você informa o tamanho do arquivo, o script verifica pra você, se não tiver ele te avisa e não copia o arquivo para o dispositivo sem espaço.
  3. Verificação de Integridade(hash MD5): Ele checa se o arquivo chegou inteiro ou se virou um amontoado de bits inúteis no meio do caminho.
  4. Interface Gráfica: Porque as vezes a gente só quer clicar em um botãozinho bonito ao invés de brigar com o terminal.

Compatibilidade

⚠️ Importante! Este script foi projetado e testado apenas para dispositivos Cisco com sistema operacional IOS. Ele (ainda)NÃO é compatível com Cisco Nexus ou outros sistemas operacionais de rede (como Junos, Arista EOS, etc.).

Screenshots

Screenshot 1

Screenshot 1

Gostou das cores? Bacana né? Foi o chatgpt que escolheu, disse que essas cores cansam menos a vista

Pré-requisitos

Para utilizar este script, você precisará:

  1. Servidor TFTP: Um servidor TFTP configurado e operacional na sua rede, acessível pelos dispositivos, e com a imagem IOS(ou arquivo) que deseja copiar hospedada nele. Recomendado: Tftpd64
  2. Acesso aos Dispositivos: Credenciais (usuário e senha) para acesso SSH aos dispositivos.
  3. Café☕ e fé nos bits🙏

Como Usar

Pré-requisitos

Python 3.x

Execução

  1. Baixe o Repositório:

    git clone https://github.com/solopx/parallelios.git
    cd parallelios
  2. Instale as dependências:

    pip install -r requirements.txt
  3. Execute o Script:

    python src/main.py
  4. Preencha as Informações na GUI:

    • TFTP Server IP Address: Endereço IP de seu servidor TFTP.
    • Filename: Nome completo da imagem/arquivo no servidor TFTP (ex: c2960s-universalk9-mz.152-7.E2.bin).
    • Hash MD5: O valor de hash MD5 esperado para o arquivo (verifique o hash MD5 do arquivo utilizando os comandos: certutil, md5sum ou através de fontes oficiais).
    • Size(MB): Tamanho estimado do arquivo em Megabytes(MB). O tamanho informado neste campo será utilizado para verificar se há espaço disponível nos dispositivos de destino antes de efetuar a cópia. Obs.: Se informado como 0 ou não informado esta verificação não será realizada.
    • Username: Seu nome de usuário para autenticação nos dispositivos.
    • Password: Sua senha de autenticação nos dispositivos.
    • Enable Pass: Marque esta checkbox caso os dispositivos necessitem de senha de enable e informe a mesma.
    • Devices: Uma lista de endereços IP dos dispositivos de destino, separados por vírgula (ex: 192.168.1.1, 192.168.1.2, 192.168.1.3).
  5. Iniciar Cópia(s): Clique no botãozinho bonito "Start Transfer".

  6. Output Log: O log de saída na parte inferior da janela mostrará o status de cada dispositivo em tempo real.

  7. Tome seu café e aprecie a bela paisagem de seu escritório enquanto aguarda o fim de todo o processo.

Notas:

MD5:

Você pode obter o hash MD5 do arquivo a ser copiado a partir de fontes confiáveis como: sites oficiais ou utilizando a linha de comando.

Para checar o hash MD5 de um arquivo em sistemas windows utilize o seguinte comando no prompt:

certutil -hashfile "C:\Caminho\Do\Arquivo Desejado.bin" MD5

Para sistemas linux\unix utilize:

md5sum  "C:\Caminho\Do\Arquivo Desejado.bin"

Tamanho dos pacotes TFTP:

Em algumas versões de IOS, o tamanho do pacote TFTP pode ser personalizado para otimizar o tempo de cópia, você pode verificar se seus dispositivos possuem esta funcionalidade com o comando:

Switch(config)# ip tftp blocksize <valor>

Os valores válidos são entre 512(padrão) a 8192.

Troubleshooting e Logs de Debug

O script gera um arquivo de log chamado copy-tftp-flash.log no mesmo diretório de execução. Este arquivo contém detalhes de baixo nível das interações com os dispositivos e é extremamente útil para depuração.

Observações sobre MAX_WORKERS e TIMEOUT_MAX

O campo MAX_WORKERS define o número máximo de operações de cópia simultâneas. O valor padrão é 5. Se você estiver processando um grande número de dispositivos e tiver uma infraestrutura de rede robusta e um servidor TFTP capaz, você pode ajustar este valor para aumentar o número de transferências simultâneas e o desempenho. Tenha em mente que, no entanto, um valor muito alto pode sobrecarregar seus recursos.

Já o campo TRANSFER TIMEOUT define o tempo máximo(em minutos) que o script irá aguardar para trasnferir o arquivo selecionado para cada dispositivo.

Estrutura de Arquivos

Esta aplicação atualmente está dividida em 3 arquivos principais:

  • main.py - Ponto de entrada da aplicação. Conecta a interface gráfica à lógica de rede, gerencia validações de input e controla o fluxo de execução.

  • gui.py - Interface gráfica em Tkinter. Define o layout, estilos visuais e expõe os widgets para o main orquestrar.

  • tftp_engine.py - Motor de transferência TFTP. Executa conexão SSH, verificação de espaço, cópia de arquivos e validação MD5 nos dispositivos.

Futuro

Em futuros updates pretendo colocar uma música suave de elevador enquanto as cópias são realizadas e um barulho de buzina de caminhão quando elas forem concluídas. Também pretendo inserir suporte a dispositivos Cisco Nexus e outros fabricantes.

Contribuições

Contribuições são bem-vindas! Se você tiver ideias para melhorias, sinta-se à vontade para abrir uma issue ou enviar um pull request.

Licença

Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.


Desenvolvido por solopx GitHub: https://github.com/solopx/

About

PT: App em Python com GUI para transferência e verificação MD5 de arquivos IOS(ou outros) via TFTP para múltiplos dispositivos Cisco simultaneamente.-- EN: A Python tool with a graphical interface developed to automate the copying and verification of IOS images (or other files) from a TFTP server to the flash memory of multiple Cisco IOS devices.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages