Para quem não sabe há pouco mais de dois anos participei como aluno de um Curso Mikrotik e obtive minha Certificação MTCA. Estes equipamentos fabricados pela empresa Mikrotik RouterOS possuem uma distribuição Linux personalizada e excelente para quase todo tipo de serviços de redes, é tanta coisa que estou pensando sériamente em montar um curso de Mikrotik e disponibilizá-lo para download.

Recentemente, por causa do meu novo emprego velho (não vou contar a história porque é longa) tive que novamente fazer uso de algunss scripts em bash que havia criado há algum tempo para monitoramento e manutenção de equipamentos Mikrotik, porém, qual não foi a minha supresa ao perceber que eles não mais funcionavam da forma como eu esperava. Os scripts em questão foram publicados anteriormente aqui no blog:

Não sei se os erros em questão foram devidos a alguma atualização do Bash ou do Mikrotik, acredito mais na possibilidade do segundo; mas juntanto o util ao agradável acabei meio que unindo os dois scripts bash e fazendo algumas modificações:

Na verdade a questão de monitoramento nem era tão importante assim, mas quando se tem que atualizar o Mikrotik através de comandos, tendo-se mais de 40 equipamentos seguindo o mesmo padrão fica meio complicada a coisa. O que estava me incomodando em meu script para enviar comando para Mikrotik era que se um dos equipamentos estivesse offline, nenhum outro que estivesse após ele na lista era atualizado, então o que este novo script bash faz é verificar se o Mikrotik está online e em caso afirmativo o comando é enviado para o Mikrotik.

Para ter um melhor gerenciamento de Mikrotik o mesmo scipt em Bash também grava um pequeno arquivo de log em formato .txt informando o ip, horário e se o equipamento foi atualizado ou não. Segue logo abaixo:

#!/bin/bash
############################################################################
# Enviar comando de configuração via SSH
# para diversas RouterBoards Mikrotik simultaneamente
# enviaMikrotik.sh – v.2.0 – 2013/07/03
#
# Autor: 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 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=12345

# Alguns comandos de exemplo:
# /system identity print
# /user print
# /ip service disable ftp
# /user remove user
# /user add name=user password=pass group=full
# set http-proxy=111.111.111.111:2222
# /user add name=user group=full password=123456 \; user set numbers=user group=full
#/snmp community set numbers=public addresses=123.123.123.123,222.222.222.222,213.213.213.213

for hosts in $(cat rbs.txt); do
    for myHost in $hosts; do
        count=$(ping -w 1 $myHost | grep 'received' | awk -F',' '{ print $2 }'| awk '{ print $1 }')

        if [ $count -eq 0 ]; then
            echo "RB: $myHost APRESENTA-SE OFFLINE EM $(date)!" >> ping.log
            echo "RB: $myHost APRESENTA-SE OFFLINE EM $(date)!"

        else
            echo "Rb: $myHost atualizada com sucesso em $(date)" >> ping.log
            echo "Rb: $myHost atualizada com sucesso em $(date)"
            sshpass -p $senha ssh $user@$myHost -p $porta /user  print ;
        fi
    done
done

Observação: O script acima está funcional para a versão 6.1 do Mikrotik RouterOs, é recomendável sempre manter seus equipamentos atualizados com a versão estável do SO e também do firmware. Caso ao executá-lo você tenha algum erro, entre em contato para que eu possa verificar.