Linkswitch (The POG)

Publicado por George Mattos 04/11/2008

[ Hits: 6.587 ]

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

Ver último twitter pelo terminal ou na barra de notificação

Ajuste de brilho do monitor

Script de Backup para FITA DAT usando "tar"

Monitorar status de transferência das interfaces de rede

Desligamento programado com interface gráfica em Zenity


  

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