domingo, 1 de maio de 2016

Script para configurar Mikrotik em massa

Este script foi feito pela necessidade de fazer mudanças de configuração em uma rede com mais de 150 Mikrotik, pois fazer um por um demora muito tempo, Espero que sei-a de utilidade para essas pessoas que administram X números de Mikrotiks.


Este script esta feito só para sistemas linux,  que precisa executar.


1.- Instalar sshpass
#apt-get update
#apt-get install sshpas

2.- Abre um editor pode ser nano, vi, gedit, notepadqq ou de preferencia, e copia e pega este script

#!/bin/bash
usuario="admin";
senha="123";
for i in $(cat ip.txt);
do
sshpass -p $senha ssh -o StrictHostKeyChecking=no $usuario@$i "/password old-password=123 new-password=12345 confirm-new-password=12345"
done

Todo o que esta com  azul pode ser mudado a critério de vocês ai vá as mudanças que vão ser feito nos Mikrotiks, no exemplo esta sendo mudado a senha emn X Mikrotiks.
Salvar o arquivo como  script.sh, depois dar permissões com o comando chmod 755 script.sh.

Crie um arquivo ip.txt ai pode adicionar toda as ip dos mikrotiks de sua rede dos que vão ser mudado as configurações. o arquivo ip.txt e o arquivo script.sh tem que estar na mesma pasta
exemplo
192.168.0.1
192.168.0.2
192.168.0.3
.
.
.
.
192.168.0.254

Para executar o script, executar o comando na terminal de consola  ./script.sh

Explicacion do script
usuario="admin";  --> Usuário atual do Mikrotik
senha="123"; ------>  Senha  atula do Mikrotik
ip.txt  ----------->  Ai vá as ip dos Mikrotik que vão ser mudados








8 comentários:

  1. importante dizer tambem que na linha:
    sshpass -p $senha ssh -o StrictHostKeyChecking=no $usuario@$i
    pode por um -p



    Muito obrigado, ajudou demais.

    ResponderExcluir
  2. Gostaria de saber o seguinte, tentei atualizar a minha router com esse script, mas o meu problema é que depois que vai atualizar a firmware, ele vai dar reboot, aí da uma mensagem pedindo pra digitar Yes, como poderia deixar isso no script ?

    ResponderExcluir
    Respostas
    1. Oi Gilson,
      Poderia fazer de este jeito, usando "Case" no script executar configuraões um trás outro usando menu de opções.

      #!/bin/bash
      usuario="admin";
      senha="wil";

      principal(){
      echo
      echo "-----------------------------------------------------"
      echo "Exemplo de para aplicar novas configurações con menus"
      echo "-----------------------------------------------------"
      echo "Opções:"
      echo
      echo "1. Executar configuração"
      echo "2. Reiniciar Mikrotiks"
      echo "3. Sair"
      echo
      echo -n "Qual a opção desejada? "

      read opcao

      case $opcao in
      1) configurar ;;
      2) reiniciar ;;
      3) exit ;;
      *) "Opção desconhecida." ; echo ; principal ;;
      esac
      }

      configurar(){
      for i in $(cat ip.txt)
      do
      sshpass -p $senha ssh -o StrictHostKeyChecking=no $usuario@$i "/password old-password=wil new-password=will confirm-new-password=will"
      done
      }
      principal

      reiniciar(){
      for i in $(cat ip.txt)
      do
      sshpass -p $senha ssh -o StrictHostKeyChecking=no $usuario@$i "/system reboot"
      principal
      done
      }
      principal

      ------------------------------------------------------


      Excluir
  3. Bom dia, como faço para enviar mais de um comando, tipo trocar a senha de 4 usuários? att

    ResponderExcluir
    Respostas
    1. Oi Anderson, para poder enviar mais de um comando seria bom trabalhar com Python pra redes, o que isso ajuda muito, eu já testei configurando Routers Cisco e 3com.

      Agora se voce quer gerenciar usuarios sera bom voce usar algum servidor de Radius.

      Excluir
    2. Meu xara, para enviar mais de um comando coloca desta forma:
      sshpass -p suasenha ssh usuario@ip "system identity print; ip pool print; user print".. e assim vai...

      Excluir
  4. Este comentário foi removido pelo autor.

    ResponderExcluir
  5. Como utilizo esse script para só fazer uma atualização em massa, sem mudar senhas?

    ResponderExcluir