wagnerfs
(usa Fedora)
Enviado em 07/10/2014 - 10:24h
O comando dig é apenas para resolver nomes. Não teria muito utilidade para a sua situação. Você quer apenas saber se o seu servidor está ou não com conexão? Se for esse o caso, tem um jeito mais fácil de fazer. Veja abaixo como adequei o link a sua realidade. Preste atenção aos comentários.
#!/bin/bash
# Atenção, antes de rodar o script, crie o arquivo abaixo
# Pode ser no diretório a sua escolha
LOG=/root/linkoff.log
#------------------------------#
# INÍCIO DA FUNÇÃO DE FAILOVER #
#------------------------------#
# Aqui optei em por uma função para deixar a estrutura do
# script mais organizada e legível. É de suma importância
# que você esteja familiarizado com o shell script
failover ()
{
# Criação de um loop infinito para testar a disponibilidade
# dos links de internet
while [ 1 ]
do
# Neste for, o comando dig retornará os dois IPs relacionados
# ao site do UOL. Você poderia por qualquer site aí, porém o UOL
# retorna dois IPs que serão utilizados pelo script para saber
# se o link de internet principal está fora
for i in `dig +short uol.com.br`
do
# Verificando a comunicação do link de internet
/bin/ping -c 1 $i
done
# Caso o resultado do comando anterior seja 0 (zero), o link
# de internet principal está ok. Se for 1 (um) houve falha no comando
# deduzindo assim ausência de conexão. Quem vai determinar isso é o
# comando echo $?. Mais abaixo, haverá um if para testar as condições
STATUS_CMD_LINK=`echo $?`
if [ $STATUS_CMD_LINK -eq 0 ]; then
echo "O LINK ESTÁ ATIVO"
else
# Se o link falhar, os comandos mais abaixo farão a limpeza
# das regras de iptables e irão configurar o segundo link de internet
# e será criado um arquivo de log informando quando houve a queda
echo "_________________________" >> $LOG
echo " " >> $LOG
echo "# LINK DE INTERNET DOWN.: `date +%d/%m/%y-%H:%M:%S`">> $LOG
echo " " >> $LOG
echo "_________________________" >> $LOG
fi
# A cada 2 minutos (120 segundos) será feito um teste no link
# principal para constar se o mesmo encontra-se no ar.
sleep 120
done
}
####### CHAMA A FUNÇÃO ########
failover
Qualquer dúvida é só avisar.