Troca de link em caso de queda de Internet (FAILOVER)
Publicado por Marcello Carvalho (última atualização em 09/08/2016)
[ Hits: 6.808 ]
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
Renomeia diretorio,subdiretorio e arquivos de maiuscula > minuscula
Troca periódica de senhas para usuários
Script para Criar/Modificar Usuarios No Ldap + Samba
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
O que você quer para sua vida ao usar o Linux?
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Audio intermitente xubuntu notebook positivo c14 vision (1)
Encontrar o comando completo de uma janela [RESOLVIDO] (2)
Instalação de Ubuntu em SSD (interno) como se fosse um dispositivo ext... (2)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (10)