fbpx
Redes

Enviar comando por ssh para Mikrotik

Para quem tem a necessidade de por vezes ter que fazer a mesma configuração em diversos equipamentos Mikrotik, caso forem poucas as RouterBoards Mikrotik a serem configuradas tal trabalho é simples, basta acessar via Winbox os equipamentos e executar sem problemas os procedimentos necessários. Porém, quando este número aumenta um pouco mais começa a ficar um trabalho maçante.

Aproveitando então dos recursos que o Linux fornece com bash, SSH e expect montei um pequeno script para solucionar tal problema.

Antes de mais nada é necessária a criação de um pequeno arquivo de texto, que aqui nomeei de “rbs.txt” com a relação dos IP’s das RouterBoards que desejaremos executar os procedimentos, o formato do arquivo é o mais simples possível: um ip por linha. Tal arquivo deve estar no mesmo diretório onde ficará localizado o script bash.


#!/bin/bash
############################################################
# Enviar comando de configuração via SSH
# para diversas RouterBoards Mikrotik simultaneamente
# enviaSSH.sh – v.0.1 – 2011/03/01
#
# Autor: Alexsandro Felix
# Site: http://blog.ffelix.eti.br
# E-mail/MSN/GTalk: [email protected]
# Este script pode ser copiado e modificado livremente,
# desde que os devidos créditos sejam concedam ao autor os devidos créditos
# O script original pode ser encontrado em: http://wp.me/pLEMr-Xt
############################################################

# Fazemos um backup das configurações atuais de nosso terminal
bkpterminal=`stty -g`

# De modo interativo, pega informações de login e senha
# para acessar as RouterBoards
echo "Digite seu login para as RB’s'"
read usuario
export user=$usuario

echo "Digite sua senha das RB’s"
# Desativa a saída de caracteres no monitor
# para que outras pessoas não vejam qual sua senha
stty -echo intr ‘^a’
read passwd
export senha=$passwd

# Volta a configuração de terminal previamente salva
stty $bkpterminal

# Defina qual a porta de conexão que o seu servidor SSH escuta
# por questões de segurança é recomendável sempre alterar a porta padrão 22
# para alguma outra de sua preferência que esteja livre
export porta=00000

# Substitua abaixo o trecho de exemplo:
# set http-proxy=111.111.111.111:2222
# pelo IP de seu Proxy e sua respectiva porta
for i in $(cat rbs.txt); do
export host=$i
expect -c ‘
spawn -noecho ssh $env(user)@$env(host) -p $env(porta) /ip hotspot profile set http-proxy=111.111.111.111:2222 numbers=0,1;
expect "ssword:"
send $env(senha)r
interact
‘
done

Detalhe importante: O script só será executado com total sucesso se todas as RouterBoards Mikrotik estiverem configuradas de modo que permitam a conexão SSH pela mesma porta, usuário e senha.

Neste exemplo de script o comando configura qual o IP do servidor Proxy e sua porta a ser usado pelos hotspots que estiverem configurados na RouterBoard, através do comando:

/ip hotspot profile set http-proxy=111.111.111.111:2222 numbers=0,1;

Porém qualquer outro comando do Mikrotik pode ser executado através deste script, basta saber usá-lo.

Imagino que o código esteja bem comentado e explique os passos que estão sendo realizados, caso tenha alguma dúvida, entre em contato via comentário aqui mesmo neste artigo ou me contate via meu twitter: [@asfelix](https://twitter.com/asfelix)

Ps.: Este foi mais um dos artigos da digamos versão 1.0 do blog que consegui recuperar isso graças ao [Aureliano Martins](http://aurelianomartins.wordpress.com/2011/11/20/enviar-comando-via-ssh-para-mikrotik), que havia gostado do script e feito uma cópia do post em seu blog.

Felix

Residindo atualmente na cidade de Cascavel, no oeste do Paraná. Já dei aulas de informática, trabalhei com Hardware, redes, fui analista de suporte, aprendi SEO e mídias sociais e também programação. Faço um pouco de tudo, mas não sou especialista em nada, por isso estou sempre estudando e tentando evoluir. Com isso vou compartilhando aqui um pouco do que vou aprendendo no dia a dia.

Verified by MonsterInsights