Script Python para backup e configuração de switches e roteadores

Criei um script em Python para enviar comandos para um lista de devices Cisco (roteadores e switches rodando IOS) e salvar o output.

O script tem sido bastante útil, podendo ser usado para fazer backup dos equipamentos e também para enviar comandos que são comuns para a lista de dispositivos, como configuração de logging, snmp, dhcp snooping, configuração de interfaces, e etc.

Meus conhecimentos de Python são limitados, então o script é bem básico. Também foi intensional ser simples o suficiente para que qualquer um possa usar, sem precisar saber de programação.

Para usar o script você vai precisar do python e dos módulos netmiko, getpass, csv, logging e datetime.

Usando o script

1) Instale o Python e os módulos necessários usando o pip.

2) Baixe o repositório do Github (ou ao menos os arquivos send_commands.py, devices_to_configure.csv e commands_to_send.txt, salvando-os na mesma pasta).

3) No arquivo devices_to_configure.csv informe a porta (22 ou 23) e o IP dos equipamentos que quer configurar/salvar os outputs.

devices

4) No arquivo commands_to_send.txt coloque os comandos que quer enviar (o script inicia no modo privilegiado).

commands

5) Execute o script: python send_commands.py.

send_commands

Na linha de comando é possível acompanhar o andamento, e o output dos comandos executados são salvos no arquivo log_file.txt, gerado na mesma pasta do script.

Mais informações no repositório do Github.

Até a próxima.

6 Comments

  • João Victor

    Olá ! me chamo João Victor e quis deixar meu comentário informando que o código no processo de backup das informações, sempre não consegue coletar todas as informações ao usar o comando sh run ( abaixo segue o log gerado ), como podem vêr falta muita coisa, e o mesmo já deixa de lado e segue para o próximo da lista

    OBS: estou começando no universo Python. Assim como, estou fazendo uso do comando: terminal length 0 antes de sh run pra ele mostrar todas as config existente na running e com isso fazer print dessa saída.

    ———————–
    Logs
    ———————–

    configure terminal
    Enter configuration commands, one per line. End with CNTL/Z.
    SW-01-2960X(config)#end
    SW-01-2960XX#terminal length 0
    SW-01-2960X#sh run
    Building configuration…

    Current configuration : 6604 bytes
    !
    ! Last configuration change at 11:00:41 BRT Tue Mar 21 2023 by –
    !
    version 12.2
    no service pad
    service timestamps debug datetime msec
    service timestamps log datetime msec
    no service password-encryption
    !
    hostname SW-01-2960X

    configure terminal
    Enter configuration commands, one per line. End with CNTL/Z.
    SW-02-2960X(config)#end
    SW-02-2960X#terminal length 0
    SW-02-2960X#sh run
    Building configuration…

    Current configuration : 6581 bytes
    !
    ! Last configuration change at 11:00:48 BRT Tue Mar 21 2023 by –
    ! NVRAM config last updated at 13:51:20 BRT Wed Apr 13 2022 by –
    !
    version 12.2
    no service pad
    service timestamps debug datetime msec
    service timestamps log datetime msec
    no service password-encryption
    !
    hostname SW-02-2960X

    • Olá João, obrigado por alertar. Fiz um teste aqui e realmente não esta funcionando.
      A coleta de informações funciona (ativando o debug você verá o output completo), mas o print (tela e arquivo) está sendo interrompido.
      Talvez no futuro eu investigue para ver o que está ocorrendo.

  • Gui

    Fala André, bom dia!

    Muito bom seu script cara, parabéns!

    Só uma coisa, eu vi que ele já entra em modo de configuração, qual linha tem que remover pra ele não entrar em conf t?

    Abraço!

    • Olá Gui, o script usa a biblioteca Netmiko, que faz o login e já entra no modo de configuração.
      Quando quero executar algum comando show, por exemplo, no script (arquivo com os comandos) eu coloco o “exit” na primeira linha.

  • Sensacional Alessandro. O seu script segue uma linha diferente do meu, já que é focado no backup.
    Esse que postei, apesar de mais simples, pode ser usado para configuração “em lote” também. enviando outros comandos.

    Obrigado por compartilhar.

  • Alessandro Lopes

    Olá André, sou o Alessandro da Marimex, fiz algo parecido aqui para a empresa, um pouco mais elaborado, com envio de email, etc, para poder praticar os conhecimentos em python.
    Também sou iniciando em python, agora tô fazendo um programa para coletar logs no event viewer para não ter que usar servidor de syslog, vai salvar no SQL, está praticamente pronto. Ainda não coloquei no github, mas se tiver interesse posso compartilhar.
    Python é uma coisa que eu quero me aprofundar e a melhor forma é praticando.

    https://github.com/alopes-sts/Backup-de-switches-com-Python

Leave a Reply

About Us

Luckily friends do ashamed to do suppose. Tried meant mr smile so. Exquisite behaviour as to middleton perfectly. Chicken no wishing waiting am. Say concerns dwelling graceful.

Services

Most Recent Posts

  • All Post
  • Branding
  • Certificação
  • Cisco
  • Cloud
  • Configuração
  • Configuração Básica
  • Development
  • Geral
  • Informação
  • Leadership
  • Linux
  • Management
  • Microsoft
  • Network
  • Security
  • UC
  • Virtualização
  • Wireless

Company Info

She wholly fat who window extent either formal. Removing welcomed.

Your Business Potential with Our Proven Strategies

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Company

About Us

Contact Us

Products

Services

Blog

Features

Analytics

Engagement

Builder

Publisher

Help

Privacy Policy

Terms

Conditions

Product

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
You have been successfully Subscribed! Ops! Something went wrong, please try again.
© 2023 Created with Royal Elementor Addons