Descrição
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!
[ Download:
linkswitch.sh ]
[
Enviar nova versão ]
[ 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
Desligando infraestrutura de ITM6
rc.firewall avançado
Atualização Automática do Uvscan (Antivirus for linux)
Script de instalação do Qmail
upload script
Comentários
[1] Comentário enviado por
juvaraide em 07/05/2012 - 14:19h:
Este script funciona para conexão PPPoe?