Uma das minhas muitas tarefas diárias é o constante monitoramento, revisão e configuração de equipamentos Mikrotik, apesar de no fim de 2010 ter-me tornado um profissional com certificação Mikrotik, quase não falo isso por aqui.
Aproveito então a chance e compartilho um bash script que criei recentemente. Ele surgiu da necessidade de por vezes ter que fazer a mesma configuração em diversos equipamentos. Se forem poucas as RouterBoards Mikrotik a serem configuradas tal trabalho é simples, poderiamos 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 massante.
Aproveitei-me então dos recursos que nosso Sistema Operacional preferido fornece juntando um pouco de bash, SSH e expect e montei o script.
Antes de mais nada, no diretório onde iremos criar nosso script, criaremos um arquivo 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.
Feito isso, criamos um arquivo que podemos nomeá-lo de “enviaSSH.sh“, e nele colocamos o seguinte conteúdo:
#########################################################
# #
# #
# #
#########################################################
#!/bin/bash
############################################################################
# Enviar comando de configuração via SSH
# para diversas RouterBoards Mikrotik simultaneamente
# enviaSSH.sh – v.0.1 – 2011/03/01
#
# <a href="http://blog.ffelix.eti.br/dicas-linux/enviar-comando-via-ssh-para-mikrotik/#" rel="nofollow">Autor</a>: Alexsandro Felix
# Site: http://blog.ffelix.eti.br
# E-mail/MSN/GTalk: felix@ffelix.eti.br
# 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 <a href="http://blog.ffelix.eti.br/dicas-linux/enviar-comando-via-ssh-para-mikrotik/#"
rel="nofollow">interativo</a>, 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 <a href="http://blog.ffelix.eti.br/dicas-linux/enviar-comando-via-ssh-para-mikrotik/#"
rel="nofollow">código</a> 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
#########################################################
# #
# #
# #
#########################################################
Uma observação que faço é referente às linhas 33 e 34 do script, que por causa da exibição aqui no blog aparecem desta forma, porém seu conteúdo deve ser digitado em apenas uma linha.
Outro detalhe é que tal script só será útil 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.
FONTE: http://aurelianomartins.wordpress.com/2011/11/20/enviar-comando-via-ssh-para-mikrotik/
Boa tarde, achei interessante seu conteudo e e quase o que eu preciso, eu tenho varias RBs mas elas nao são o problema, eu tenho switchs da tplink que são POE e nele são ligadas cameras ip e do nada travam ai reinicio o switch e elas voltam, queria fazer um script para que a RB reinicie esse equipamento 1x por dia assim diminui os travamentoas, sera que vc consegure bolar algo.
ResponderExcluirBoa tarde, achei interessante seu conteudo e e quase o que eu preciso, eu tenho varias RBs mas elas nao são o problema, eu tenho switchs da tplink que são POE e nele são ligadas cameras ip e do nada travam ai reinicio o switch e elas voltam, queria fazer um script para que a RB reinicie esse equipamento 1x por dia assim diminui os travamentoas, sera que vc consegure bolar algo.
ResponderExcluir