Boa noite, vou compartilhar um script de aviso de manutenção que eu uso aqui já a algum tempo e roda 100%.
Bem o script roda no mk-auth com rotina do cron, funciona assim, o script pinga o determinado host, se o ping falhar ele executa o comando ssh nos ramais para ativar a pagina de manutenção, se pigar ele desativa a pagina (regra do nat que redireciona para a pagina) ok
1º tem que ter a regra do nat com o comentario manutencao nos ramais (se tiver mais de um).
2º o ssh tem que está funcionando corretamente entre o mk-auth e os mikrotiks.
vou explicar como funciona o script e como altera-lo:
#############EXEMPLO###########
#!/bin/bash
#AQUI COLOQUE O IP QUE DESEJA PINGAR (NESSE CASO DNS GOOGLE)
host="8.8.8.8"
#COMANDO PARA HABILITAR A REGRA DE NAT
comando1="/ip firewall nat enable [find comment="manutencao"]"
#COMANDO PARA DESABILITAR A REGRA DE NAT
comando2="/ip firewall nat disable [find comment="manutencao"]"
mikrotik=("172.20.10.4") # RAMAL 1
mikrotik[1]="172.20.10.5" # RAMAL 2
mikrotik[2]="172.20.10.6" # RAMAL 3
mikrotik[3]="172.20.10.7" # RAMAL 4
mikrotik[4]="172.20.10.8" # RAMAL 5
mikrotik[5]="172.20.10.9" # RAMAL 6
for ramal in "${mikrotik[@]}"; do
if ! ping -c 4 $host >/dev/null; then
#comando ssh, altera a porta ssh em "-p1122"
sudo ssh -l mkauth $ramal -p1122 "$comando1"
else
sudo ssh -l mkauth $ramal -p1122 "$comando2"
fi
done
################EXEMPLO###########
adcione os ramais seguindo a lógica mikrotik[6]="ip do ramal" , se só tem 1 ramal apague os outros e deixe só a primeira linha ex: mikrotik=("172.20.10.4")
a regra de nat para o mikrotik:
bem aqui eu faço assim:
em ip firewall addres-list criei uma lista com nome "sites_liberados" e coloco alguns ips que ficam fora da regra incluindo o ip do mk-auth exemplo: o ip do meu mk-auth é 172.40.10.2 então fica assim:
/ip firewall address-list
add address=172.40.10.2 disabled=no list=sites_liberados
na regra do nat eu deixo a porta ssh no meu caso "1122" e a do winbox no meu caso "8294" ficam fora da regra tambem, então fica assim:
/ip firewall nat
add action=dst-nat chain=dstnat comment=manutencao disabled=yes dst-address-list=!sites_liberados dst-port=!1122,8294 \
protocol=tcp to-addresses=172.40.10.2 to-ports=89
(edite essas regras se for usar, ip do mk-auth e as portas ssh e winbox, é importante que o comment="manutencao" esteja escrito igual o do script manutencao.sh, não use caractres como "Ç ~" ex: "manutenção" pode dar erro)
o script como ele é pequeno vou colocar abaixo mais tambem está em anexo como txt, copie e cole no bloco de notas e edite conforme sua rede depois salve como "manutecao.sh" sem aspas, copie para /usr/local/mkauth/scripts do seu mk-auth, dê permissão 777 depois crie o agendamento no cron
pelo putty com o comando
crontab -e
0-50/2 * * * * /usr/local/mkauth/scripts/manutencao.sh
salve e pronto.
script manutencao.sh
########## começa aqui ##############
#!/bin/bash
host="8.8.8.8"
comando1="/ip firewall nat enable [find comment="manutencao"]"
comando2="/ip firewall nat disable [find comment="manutencao"]"
mikrotik=("172.20.10.4")
mikrotik[1]="172.20.10.5"
mikrotik[2]="172.20.10.6"
mikrotik[3]="172.20.10.7"
mikrotik[4]="172.20.10.8"
mikrotik[5]="172.20.10.9"
for ramal in "${mikrotik[@]}"; do
if ! ping -c 4 $host >/dev/null; then
sudo ssh -l mkauth $ramal -p1122 "$comando1"
else
sudo ssh -l mkauth $ramal -p1122 "$comando2"
fi
done
########## termina aqui ###############
Bem é isso, fica ai a idéia para o bom desenvolvimento espero que ajude bastante,
um abraço a todos.
Respostas
amigo esse agendamento é 2 aegundos?
0-50/2 * * * * /usr/local/mkauth/scripts/manutencao.sh
Edson Pereira disse:
amigo qual o tempo pra execução desse agendamento ?
0-50/2 * * * * /usr/local/mkauth/scripts/manutencao.sh
pode min add pra tirarmos uma duvida sobre http://mk-auth.com.br/forum/topics/contribui-o-script-aviso-de-manu... ........ como faço editar o crontab -e eu salvo mas quando entro dinovo ele nao esta mais la a regrinha porq ?
acompanhando...
vlw
vlw...