Troca de link em caso de queda de Internet (FAILOVER)
Publicado por Marcello Carvalho (última atualização em 09/08/2016)
[ Hits: 7.054 ]
Download 1469052792.failover.sh (versão 2)
Um simples script para troca de gateway de um firewall com duas wans em caso de queda do link ativo.
Adcione uma regra ao cron da seguinte forma:
*/1 * * * * /home/script/failover.sh
No meu caso meu script é executado a cada minuto e esta localizado dentro da pasta HOME.
Versão 2 - Enviado por Marcello Carvalho em 20/07/2016
Changelog: Adicionado
- Função que gera um script auxiliar para voltar para o Gateway principal quando este estiver ON novamente
Retirados
- LOG de monitoramento de testes
Download 1469052792.failover.sh
#!/bin/bash
Link1="192.168.0.1"
Link2="192.168.10.1"
Ver1="8.8.8.8"
Ver2="8.8.4.4"
arquivoLog='failover.log'
pastaLog='/var/log/failover/'
dataAtual=$(date | awk '{print $1, $2, $3, $4}')
function Verifica(){
ping=$(ping -c 3 $1 | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
}
function getGateway(){
#Identifica o Gateway Default do servidor
gateway=$(/usr/sbin/route -n | grep UG | grep 0.0.0.0 | awk '{print $2}');
}
function setGatway(){
#Deleta Gateway Default
/usr/sbin/route del default gw $oGateway >> /home/script/LOG
#Seta novo Gateway Default
/usr/sbin/route add default gw $nGateway >> /home/script/LOG
}
function down(){
#verifica se ja existem rotas definidas para os Verificadores
tVer1=$( /usr/sbin/route -n | grep $Ver1 | awk '{ print $1}' )
tVer2=$( /usr/sbin/route -n | grep $Ver2 | awk '{ print $1}' )
#Teste se a rota ja existe para não tentar criar duas vezes
if [ -z $tVer1 ]; then
/usr/sbin/route add -net $Ver1 netmask 255.255.255.255 gw $Link1 >> /home/script/LOG
fi
if [ -z $tVer2 ]; then
/usr/sbin/route add -net $Ver2 netmask 255.255.255.255 gw $Link2 >> /home/script/LOG
fi
getGateway
case $gateway in
"$Link1")
Verifica $Ver1 $gateway >> /home/script/LOG
oGateway=$(echo $Link1)
nGateway=$(echo $Link2);;
"$Link2")
Verifica $Ver2 $gateway >> /home/script/LOG
oGateway=$(echo $Link2)
nGateway=$(echo $Link1);;
esac
if [ $ping -gt 0 ]; then
echo "$dataAtual Conexão válida com a internet através do GW: $gateway" >> $pastaLog$arquivoLog #Caso não queira o log deste registro basta alterar a saida para "> /dev/null"
else
if [ -d $pastaLog ]; then
echo "$dataAtual Gateway Atual: $gateway sem conexão com a internet, mudando para o gateway: $nGateway" >> $pastaLog$arquivoLog
else
mkdir $pastaLog
echo "$dataAtual Gateway Atual: $gateway sem conexão com a internet, mudando para o gateway: $nGateway" >> $pastaLog$arquivoLog
fi
echo "Falha em obter conectividade com a internet através do GW: $gateway"
echo "Alternando link"
setGatway
fi
}
down
Verificar conexão com Internet
duplex_record: mixando áudio do microfone e saída de áudio de um programa via P
Verifica quais ports necessitam de atualização
Berry Bank: Criando um Banco Digital Gamificado para seus Filhos com Gentoo, Flask e Tailscale
Papagaiando o XFCE com temas e recursos
Instale o DOOM Retro no Gentoo facilmente via Overlay
Steam (Flatpak) rodando jogos em partição NTFS
O dock Plank + U-Launcher deixam qualquer desktop mais produtivo
Instalar Linux em notebook Sony Vaio VPCEG13EB (17)
Alguém tem que acabar com ANATEL!!! (10)
O que você está ouvindo agora? [2] (229)









