Esse script tem como finalidade a redundância entre 2 links de internet, priorizando 1. No meu caso, tenho net de 10mb e speedy de 1mb que é somente para urgências. Assim Se net cair, speedy assume. Se speedy estiver up e net voltar a ter sinal, ele chaveia novamente para a net, assim como se speedy estiver off, ele fica chaveando entre as 2 até encontrar sinal. Esse script está sob o comando do CRON, que o executa a cada minuto.
*/1 * * * * root /services/startup/redundancia2.sh > /services/startup/log/redundancia.log 2>&1
#!/bin/bash by Vinicius Lorena ak mtphys && ack
#########################################################################
# VARIAVEIS
#########################################################################
ARQUIVO=”../arquivo.txt” #Arquivo que armazerá valores 0,1, representando os links.
LER_VALOR=”$(/bin/cat $DIR)” #Leitura do valor armazenado em arquivo.txt
PING=”/bin/ping”
PING=”$PING -c 1″
GW_NET=”187.107.148.1″
GW_SPEEDY=”192.168.1.1″
GW_MODEM=”200.100.11.73″
ROUTE=”/sbin/route”
TESTE1=$($PING $GW_NET | grep packets | cut -d ‘ ‘ -f 4) #Testa se NET está off
TESTE2=$($PING $GW_MODEM | grep packets | cut -d ‘ ‘ -f 4) #Testa se Speedy está off
#########################################################################
# MAIN
#########################################################################
RESULT=$TESTE1
RESULT2=$TESTE2
if [ $RESULT -eq 0 ] && [ $LER_VALOR -eq 0 ]
then
echo “Servidor fora, realizando 3 tentativas..”
echo “Tentativa 1″
RESULT=$TESTE1
if [ $RESULT -eq 0 ];then
echo “Tentativa 2″
RESULT=$TESTE1
if [ $RESULT -eq 0 ];then
echo “Tentativa 3″
RESULT=$TESTE1
if [ $RESULT -eq 0 ];then
sleep 3
echo “1″ > $ARQUIVO
$ROUTE del default
$ROUTE add default gw $GW_SPEEDY
echo “10.0.0.1″ > /etc/resolv.conf
echo “8.8.8.8″ >> /etc/resolv.conf
/services/startup/firewall2.sh
fi
fi
fi
elif [ $RESULT2 -eq 0 ] && [ $LER_VALOR -eq 1 ];then
echo “Servidor fora, realizando 3 tentativas..”
echo “Tentativa 1″
RESULT2=$TESTE2
if [ $RESULT2 -eq 0 ];then
echo “Tentativa 2″
RESULT2=$TESTE2
if [ $RESULT2 -eq 0 ];then
echo “Tentativa 3″
RESULT2=$TESTE2
if [ $RESULT2 -eq 0 ];then
sleep 3
echo “Voltando para o link da NET VIRTUA”
echo “0″ > $ARQUIVO
$ROUTE del default
$ROUTE add default gw $GW_NET
echo “10.0.0.1″ > /etc/resolv.conf
echo “8.8.8.8″ >> /etc/resolv.conf
/services/startup/firewall.sh
fi
fi
fi
elif [ $RESULT -eq 1 ] && [ $LER_VALOR -eq 1 ];then
sleep 3
echo “Voltando para o link da NET VIRTUA”
echo “0″ > $ARQUIVO
$ROUTE del default
$ROUTE add default gw $GW_NET
echo “10.0.0.1″ > /etc/resolv.conf
echo “8.8.8.8″ >> /etc/resolv.conf
/services/startup/firewall.sh