Páginas

quarta-feira, 20 de março de 2013

Mikrotik - Enviar comando usando SSH


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/

2 comentários:

  1. 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.

    ResponderExcluir
  2. 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.

    ResponderExcluir