você está aqui: Home  → Arquivo de Mensagens Workshop Gratuito: Os Segredos do Shell, com o Prof. Julio Neves

Monitorando servidores pelo celular

Colaboração: Daniel Roberto

Data de Publicação: 09 de Abril de 2007

Hoje irei mostrar um script que me ajudou muito a monitorar meus servidores, ele envia um e-mail de aviso para você quando um dos servidores estiver fora do ar.

Você já deve conhecer algum utilitário que faça a mesma coisa, mas tem algo que este faz a mais. Usando um serviço do yahoo mail você pode redirecionar os e-mails recebidos para o seu celular e desta maneira ser informado de uma queda em qualquer lugar onde você estiver!!!

Você vai precisar instalar o programa msmtp.

apt-get install msmtp

Se você utilizar outra distribuição visite http://sourceforge.net/project/showfiles.php?group_id=86651&package_id=90067&release_id=480212

Depois de instalar o programa, vamos configura-lo. Crie um arquivo na pasta home do usuário que vai executar o script com o nome ".msmtprc" e cole todo conteúdo abaixo:

account NOME_DO_USUARIO
host smtp.mail.yahoo.com.br
from EMAIL_VALIDO_NO_YAHOO
auth login
user NOME_DE_USUARIO_DO_EMAIL
password SENHA_DO_EMAIL
#If your SMTP Server supports TLS encryption, uncomment the next line
#tls

account default:NOME_USUARIO_DO_SISTEMA

Atenção observe que o arquivo ".msmtprc" é oculto. Agora execute o comando chmod 600 .msmtprc para modificar as permissões do arquivo. Depois disto crie outro arquivo ainda na pasta home com o nome verifica e cole este conteúdo nele

#!/bin/sh
#######################################
#Script para verificação de servidores
#
#Feito por DRMO
#12/10/2006
#######################################

local=' uol.com.br'
server1="NOME OU IP DO SERVIDOR"
server2="NOME OU IP DO SERVIDOR"
mail=SEU_EMAIL_VALIDO ( Só lembrando que este e-mail foi aquele configurado anteriormente no msmtp)

# Verificando link local (pingando host na internet)

ping -c 5 "$local"
[ $? = 1 ] && exit

# Pingando servidor numero 1

ping -c 5 "$server1"
[ $? = 1 ] && {
echo -e "From: alerta@alertando.com.br
Subject: servidor \n
\n\n
"$server1" is down" | msmtp "$mail"
}

sleep 10

# Pingando servidor numero 2

ping -c 5 "$server2"
[ $? = 1 ] && {
echo -e "From: alerta@alertando.com.br
Subject: servidor \n
\n\n
"$server2" is down" | msmtp "$mail"
}

Observe que primeiro foi feita uma verificação no "uol.com.br" para eliminar possíveis erros de conexão com a internet, só depois foi realizado o teste nos servidores.

Agora crie um arquivo ainda na pasta home com nome de "controler_verifica" e cole este conteúdo nele:

#!/bin/sh
# Matando processos existentes
pide=$(cat /tmp/controler)
kill -9 "$pide"
# Coloque aqui o valor de tempo em minutos com 1 (um) digito, que será o intervalo entre as verificações
#Exemplo: 10 = "Dez minutos"
tempo=20

time=$((60 * $tempo))
# Criando pid
echo "$$" > /tmp/controler
# condicional loop

while :
do
~/verifica
sleep "$time"
done

Crie só mais um arquivo ainda na pasta home com o nome de "matar_controler" e cole este conteúdo nele:

#!/bin/sh
pide=$(cat /tmp/controler)
kill -9 "$pide"

Agora execute o comando na pasta home "chmod +x verifica controler_verfica matar_controler" para tornar os arquivos executáveis.

Faça:

./controler_verifica&

Faça um teste!! Simule um servidor fora do ar!

Você já deve estar recebendo mensagens no seu e-mail do yahoo

Vá até este site e crie sua conta e siga as instruções de configuração http://br.mobile.yahoo.com/mailalertas/

Crie também o filtro no Subject com o assunto "servidor" para que a mensagem seja enviada para o seu celular.

Só lembrando que cada mensagem recebida no celular te torra +ou- 10 centavos!!

Eu só quero que este script rode das 8:00 às 06:00 de segunda à sexta. Pois não quero ser acordado por uma mensagem no celular às 4:00 da manha né!!!!!!!!

Então coloco isso na crontab

00 8    * * 2-6 daniel   ~/controler_verifica
00 18    * * 2-6 daniel   ~/matar_controler

Resumo

O resultado será um script que testa 2 (ou mais) servidores de 10 em 10 minutos de segunda à sexta das 8:00 às 18:00. Obviamente você irá precisar de no mínimo 2 maquinas pois não seria possível a entrega do e-mail se maquina estiver fora!!



Veja a relação completa dos artigos de Daniel Roberto