Enviado em 02/12/2012 - 21:52h
Eu continuo achando que a melhor forma de testar DNS com consultas DNS, não com ping. É, inclusive, mole de fazer.
Enviado em 02/12/2012 - 21:52h
Enviado em 03/12/2012 - 11:32h
Enviado em 03/12/2012 - 14:11h
Enviado em 03/12/2012 - 15:43h
Enviado em 03/12/2012 - 19:26h
#!/bin/bash
#### SCRIPT BEGIN ####
INTERNET="virtua"
COUNT=0
MUDOU=0
IP="www.google.com.br"
#captura o IP do primeiro DNS
DNS1=`grep nameserver /etc/resolv.conf | head -n 1 | awk '{ print $2 }'`
#captura o IP do segundo DNS (nao sei se tem outra forma mais facil/menor de capturar, mas consegui assim
DNS2=`grep nameserver /etc/resolv.conf | head -n 2 | awk getline | awk '{ print $2 }'`
while [ "loop" == "loop" ]; do
dig $IP @"$DNS1" | grep -q 'status: NOERROR' && FALHA=0 || FALHA=1
#se falhar 1x entra no segundo DIG usando o segundo DNS
if [ FALHA -eq 1 ]; then
dig $IP @"$DNS2" | grep -q 'status: NOERROR' && COUNT=0 || let COUNT++
fi
#se falhar 2x, entao o COUNT recebe +1
echo $COUNT
echo $MUDOU
#uso esse $MUDOU para referencia minha pois deixo o script rodando dentro de um "screen", entao diariamente eu entro pra ver qtas vezes precisou mudar de link
#se tiver 1 falha ele muda o local de teste afinal o problema tbm pode ser no local da consulta e nao no meu provedor
if [ $COUNT -eq 1 ]; then
IP="www.yahoo.com"
#se tiver 2 falhas ele muda de novo
elif [ $COUNT -eq 2 ]; then
IP="www.terra.com.br"
#se tiver 3 falhas entao troca o link, zera o $COUNT e o $MUDOU ganha +1
elif [ $COUNT -ge 3 ]; then
IP="www.google.com.br"
if [ $INTERNET == "virtua" ]; then
echo MUDANDO PARA SPEEDY
INTERNET="speedy"
ifdown eth2
pon dsl-provider
ddclient
/etc/init.d/squid restart
COUNT=0
let MUDOU++
else
echo MUDANDO PARA VIRTUA
INTERNET="virtua"
poff -a
ifup eth2
ddclient
/etc/init.d/squid restart
COUNT=0
let MUDOU++
fi
fi
sleep 10
done
#### SCRIPT END ####
Enviado em 03/12/2012 - 23:03h
Entre na sua conta para responder.