jaksonwkr
(usa CentOS)
Enviado em 06/10/2013 - 18:59h
ai galera to precisando de uma ajuda nesse script
a ideia é basicamente ficar testando a interface principal se o link cair ele troca a rota para a secundária, e continua testando a interface principal pra ver se o link volta, se voltar ele retorna a rota padrão.
queria umas dicas para melhorar o script, tipo utilizar outra ferramenta para testar a conexão em vez do ping e se tem como descobrir meu gateway em vez de definir no "braço"
#!/bin/bash
#INTERFACES
DEV_PADRAO="eth0"
DEV_ATUAL=$DEV_PADRAO
DEV_NOVO="wlan0"
RT_PADRAO=192.168.0.1
RT_NOVA=192.168.0.1
mudaRota () {
echo -n " Excluindo rota antiga..."
/sbin/route del default &>/dev/null && ok || fail
echo -n " Inserindo nova rota..."
/sbin/route add default gw $1 dev $2 &>/dev/null && ok; return 0 || fail; return 1
}
testaConecxao () {
if ping -c2 -s 10 -I $1 8.8.8.8 &>/dev/null; then
return 0
else if ping -c2 -s10 -I $1 uol.com.br &>/dev/null; then
return 0
fi
fi
return 1
}
ok (){
echo -en "\{TEXTO}33[60G [ \{TEXTO}33[32m OK \{TEXTO}33[0m ]"
echo
}
fail (){
echo -en "\{TEXTO}33[60G [ \{TEXTO}33[30m FALHA \{TEXTO}33[0m ]"
echo
}
while true; do
if [ $DEV_ATUAL = "eth0" ]; then
echo -n "Testando $DEV_ATUAL..."
if ! testaConecxao $DEV_ATUAL; then
fail
echo "+++++++++++++++++++++++++++++++++++++++"
echo " Link Principal Caiu!"
mudaRota $RT_NOVA $DEV_NOVO && DEV_ATUAL=$DEV_NOVO
echo "+++++++++++++++++++++++++++++++++++++++"
continue
fi
ok
else
echo "Testando LINK Principal: $DEV_PADRAO..."
if testaConecxao $DEV_PADRAO; then
ok
echo
echo "+++++++++++++++++++++++++++++++++++++++"
mudaRota $RT_PADRAO $DEV_PADRAO && DEV_ATUAL=$DEV_PADRAO
echo "+++++++++++++++++++++++++++++++++++++++"
echo
else
echo -n "Testando $DEV_ATUAL..."
if ! testaConecxao $DEV_ATUAL; then
echo "OS 2 LINKS ESTÃO FORA!!!"
/sbin/ifconfig $DV_PADRAO down
/sbin/ifconfig $DV_NOVA down
sleep 60
/sbin/ifconfig $DV_NOVA up
/sbin/ifconfig $DV_PADRAO up
continue
fi
ok
continue
fi
fi
done