Linkswitch (The POG)

Publicado por George Mattos 04/11/2008

[ Hits: 6.220 ]

Download linkswitch.sh




Esse script provê de forma simples e eficiente uma redundância entre dois links de internet (sem load balance), sendo um link principal e o outro de backup.

Na verdade isso é uma POG testada aqui na empresa que eu trabalho, e funciona bem!

  



Esconder código-fonte

#!/bin/bash
# Observacoes
#
# Esse script prove de forma simples e eficiente uma redundancia entre 
# dois links de internet (sem load balance), sendo um link principal e o outro de backup.
#
# Esse script depende do programa iproute2
#
# Adicione a linha abaixo em /etc/init.d/networking:
# /etc/linkswitch.sh
#
# Adicione a linha abaixo em /etc/crontab e reinicie o cron:
# *  *    * * *   root    sh /etc/linkswitch.sh 21 >> /var/log/linkswitch.log
# /etc/init.d/cron restart
# 
# Edite o arquivo /etc/iproute2/rt_tables e adicione duas tabelas
# 20   provedor1
# 30   provedor2
#
# Depois configure uma rota padrao em cada uma delas e crie um arquivo de incializacao para
# evitar que sejam apagadas caso ocorra um reboot no sistema, uma boa ideia seria coloca-las
# em /etc/init.d/networking
# ip route add default via <gateway_do_provedor1> table provedor1
# ip route add default via <gateway_do_provedor2> table provedor2
#
# Escrito por George Matos, Fortaleza, 21 de Outubro de 2008

# Email do administrador
MAILADMIN=administrador@suaempresa.com.br; export MAILADMIN

# Gateway ativo
GWUP=`ip route show | grep ^default | cut -d " " -f 3`

# Gateway master
GW1=1.2.3.4; export GW1 # Substitua pelo gateway do seu link principal

# Gateway slave
GW2=4.3.2.1; export GW2 # Substitua pelo gateway do seu link backup

if [ $GWUP == $GW1 ]; then

   echo "$HOSTNAME: `date` - Rota default: master"

else

   echo "$HOSTNAME: `date` - Rota default: slave"
   echo "$HOSTNAME: `date` - Verificando disponibilidade do link master..."
   route add -net 0.0.0.0 gw $GW1 metric 10
   ping -I eth1 200.160.2.3 -c 5 -A > /dev/null

   if [ $? -eq 0 ]; then
   
      echo -e "$HOSTNAME: `date` - \e[32;1mLink master UP\e[m"
      route del -net 0.0.0.0 gw $GW2 metric 1
      echo "O link principal esta se conectando com a internet!" | mail -s "Link principal voltou!" $MAILADMIN

      exit 0
      
   else
      
      echo "$HOSTNAME: `date` - Link master off-line"
      echo "$HOSTNAME: `date` - Link slave on-line"
      route del -net 0.0.0.0 gw $GW1 metric 10
      if [ -e /tmp/linkswitch.tmp ]; then
      
         rm /tmp/linkswitch.tmp
         exit 0
      fi

      exit 0

   fi

fi

echo "$HOSTNAME: `date` - Testando link master..."
ping -I eth1 200.160.2.3 -c 5 -A > /dev/null

   if [ $? -eq 0 ]; then

      echo "$HOSTNAME: `date` - Link master on-line"

   else

      echo -e "$HOSTNAME: `date` - \e[31;1mLink master DOWN\e[m"
      echo "$HOSTNAME: `date` - Subindo link slave..."
      ip route del default
      ip route add default via $GW2 metric 1
      >/tmp/linkswitch.tmp
      echo "Link slave on-line, isso pode ter ocorrido pela falha temporaria do link principal. Entre em contato com o seu provedor" | mail -s "AVISO! Seu link principal pode estar off-line" $MAILADMIN
   
   fi

Scripts recomendados

Atualização do FreeBSD

POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS

Criar usuários com ponto (nome.usuario) no Slackware

Script em shell do artigo: Implementando a segurança em servicos de acesso remoto

Ativando Numlock como serviço e no boot


  

Comentários
[1] Comentário enviado por juvaraide em 07/05/2012 - 14:19h

Este script funciona para conexão PPPoe?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts