Vou mostrar exatamente como fiz no meu caso, sintam-se à vontade para modificar as instruções.
# cd /
# mkdir monitor
# cd monitor/
# mkdir logs
Salve o script abaixo como "monitor.sh":
#!/bin/bash
############CONFIGURACAO
local=/monitor
log=$local/logs/"LOG-`date +%d%m%y`.txt"
numero=5498979897
EMAIL_DE="@gmail.com"
EMAIL_PARA="@outlook.com"
EMAIL_PARA2=""
SERVIDOR_SMTP="smtp.gmail.com:587"
SENHA='senha' #########################
echo "---------------------------------------" >> $log
for i in $( cat $local/servidores.txt)
do
ping -c 1 -W 3 "$i" > /dev/null # -c para 1 ping e -W para 1 segundo de espera por ping
if [ "$?" -ne 1 ];then # RECONECTADO
if [ -e $local/$i-OFF.txt ]; then
printf "%13s - %12s - %6s\n" $i RECONECTADO `date +%H:%M:%S` >> $log
if [ $(cat $local/$i-OFF.txt) -ge 3 ]; then # ENVIA EMAIL
ASSUNTO="SERVIDOR RECONECTADO - $i"
MENSAGEM="Servidor $i reconectado - `date +%H:%M:%S`"
ANEXO=""
sendEmail -f $EMAIL_DE -t $EMAIL_PARA -bcc $EMAIL_PARA2 -u "$ASSUNTO" -m "$MENSAGEM" -a $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_DE -xp $SENHA >
$local/log_email.txt # ENVIA SMS
echo "$MENSAGEM" | gammu --sendsms TEXT $numero > $local/log_sms.txt
fi
rm $local/$i-OFF.txt
else # CONECTADO
printf "%13s - %12s - %6s\n" $i CONECTADO `date +%H:%M:%S` >> $log
fi
else # DESCONETADO
printf "%13s - %6s - %6s\n" $i DESCONECTADO `date +%H:%M:%S` >> $log
if [ -e $local/$i-OFF.txt ]; then
cont=$(cat $local/$i-OFF.txt) && soma=$(($cont + 1)) && echo "$soma" > $local/$i-OFF.txt
else
echo "1" > $local/$i-OFF.txt
fi
if [ $(cat $local/$i-OFF.txt) -eq 3 ]; then # PERDEU 3 PINGS ENVIA EMAIL
ASSUNTO="PERDA DE REDE - $i"
MENSAGEM="Servidor $i sem resposta - Primeiro Alerta - `date +%H:%M:%S`"
ANEXO=""
sendEmail -f $EMAIL_DE -t $EMAIL_PARA -bcc $EMAIL_PARA2 -u "$ASSUNTO" -m "$MENSAGEM" -a $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_DE -xp $SENHA >
$local/log_email.txt # ENVIA SMS
echo "$MENSAGEM" | gammu --sendsms TEXT $numero > $local/log_sms.txt #rm $local/$i-OFF.txt
elif [ $(cat $local/$i-OFF.txt) -eq 34 ]; then # PERDEU + de 4 PINGS ENVIA EMAIL
ASSUNTO="PERDA DE REDE - $i"
MENSAGEM="Servidor $i sem resposta - Alerta Continuo - `date +%H:%M:%S`"
ANEXO=""
sendEmail -f $EMAIL_DE -t $EMAIL_PARA -bcc $EMAIL_PARA2 -u "$ASSUNTO" -m "$MENSAGEM" -a $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_DE -xp $SENHA >
$local/log_email.txt # ENVIA SMS
echo "$MENSAGEM" | gammu --sendsms TEXT $numero > $local/log_sms.txt
echo "4" > $local/$i-OFF.txt
fi
fi
done
echo "---------------------------------------" >> $log
1. Colocaremos o script "monitor.sh" dentro do diretório “/monitor”.
2. Criaremos um arquivo dentro de “/monitor”, com os IPs dos servidores a serem monitorado, e terá o nome “servidores.txt”.
E para finalizar, colocaremos o script para ser executado a cada 1 minuto.
# crontab -e
* * * * * /monitor/monitor.sh
Finalizando
Obs.: dentro do diretório “/monitor/logs”, estará os logs de cada ping junto com os horários de queda e reconexão. Dêem uma lida no script para entender seu funcionamento e mudar, caso queiram.
Após ler várias dicas contidas na Internet, bolei esta ideia. Se for útil para alguém, está aí!
Não sei se ficou legal, se o conteúdo ficou claro, mas gostei do que fiz e quis compartilhar com todos.
Este foi meu primeiro artigo, pode ser que não tenha ficado muito bom, mas quem sabe os próximos, ficarão.
[9] Comentário enviado por MarceloTheodoro em 31/08/2013 - 01:17h
Colega... você não tem ideia do tanto que me ajudou! rs
Na verdade, não pelo script em si, mas a ideia de enviar informações do próprio servidor via SMS me ajudou a bolar uma ótima ideia para resolver um problema antigo. :)
[12] Comentário enviado por gpxlnx em 02/09/2013 - 17:55h
Parabens pelo artigo amigo, só uma dúvida, na linha " elif [ $(cat $local/$i-OFF.txt) -eq 34 ]; then" no fim do arquivo nao seria apenas 4 ao invez de 34? vlw
[13] Comentário enviado por Williamm em 02/09/2013 - 18:53h
[12] Comentário enviado por gpxlnx em 02/09/2013 - 17:55h:
Parabens pelo artigo amigo, só uma dúvida, na linha " elif [ $(cat $local/$i-OFF.txt) -eq 34 ]; then" no fim do arquivo nao seria apenas 4 ao invez de 34? vlw
Muito obrigado, mas a respeito da sua dúvida, esta parte do script é para alertas contínuos, você pode alterá-lo, pois assim ele não envia os alertas em curto prazo de tempo, no exemplo ele envia os alertas contínuos em torno de a cada 30 minutos após o primeiro alerta. Qualquer duvida to ai, e obrigado novamente.
[17] Comentário enviado por luc1anocruz em 02/08/2014 - 10:14h
Parabéns pelo tutorial. Estou a procura de "quase isso" eu preciso de algo que fique pingando um servidor na rede, e ao não ter resposta do ping ele envia uma SMS para o celular do administrador, estava pensando em um aplicativo que ficasse rodando em uma outra maquina com uma internet mais confiável, alguém ae sabe se existe algo pronto ? pois tenho um servidor e as vezes a internet dele cai, então eu queria monitorar em tempo real quando a internet dele cair.
[18] Comentário enviado por williamm em 02/08/2014 - 21:22h
[17] Comentário enviado por luc1anocruz em 02/08/2014 - 10:14h:
Parabéns pelo tutorial. Estou a procura de "quase isso" eu preciso de algo que fique pingando um servidor na rede, e ao não ter resposta do ping ele envia uma SMS para o celular do administrador, estava pensando em um aplicativo que ficasse rodando em uma outra maquina com uma internet mais confiável, alguém ae sabe se existe algo pronto ? pois tenho um servidor e as vezes a internet dele cai, então eu queria monitorar em tempo real quando a internet dele cair.
Obrigado, mas o que você est'procurando não é exatamente o que o script faz?
Você coloca ele rodar em um servidor ou até mesmo para monitorar o proprio e quando ele nao retornar um ping a um determinado IP ou o IP de outro servidor ele lhe envia um SMS e até mesmo um e-mail.... Qualquer coisa posso tentar lhe ajudar, ao existir outros programas que façam isso tem um que não sei ao certo como funciona mas é o PHP server monitor. http://www.phpservermonitor.org/
[19] Comentário enviado por felipe19 em 29/04/2015 - 14:31h
muito bom o artigo, parabéns! Me ajudou a resolver um problema...
Amigo, sabe me dizer se tem como eu fazer um envio em massa? Tipo, enviar vários SMS "de uma vez".
[20] Comentário enviado por Williamm em 04/05/2015 - 17:48h
[19] Comentário enviado por felipe19 em 29/04/2015 - 14:31h
muito bom o artigo, parabéns! Me ajudou a resolver um problema...
Amigo, sabe me dizer se tem como eu fazer um envio em massa? Tipo, enviar vários SMS "de uma vez".
Obrigado, olha não cheguei a testar algo parecido, mas você pode testar utilizando um arquivo com os números e fazer um laço para que envie a mesma mensagem para cada um que estiver no arquivo.