Troca de link em caso de queda de Internet (FAILOVER)
Publicado por Marcello Carvalho (última atualização em 09/08/2016)
[ Hits: 6.632 ]
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
Criando Autoridades Certificadoras e Certificados de Testes no Linux
speedy.sh - Wget no popup do speedy home :-)
Bloquear Facebook no Linux Educacional 3
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta