pingping - Verificando conexão com servidores.

Ai em baixo meu script pingping. Ele vai alertar os emails quando algum servidor parar. Leia ele :).



#!/bin/sh
# Este script pinga servidores na lista da variavel SERVIDORES e envia
# emails para os emails da lista da variavel LISTA_EMAILS alertando caso
# eles caiam. O script só alerta se na última vez que ele testou o
# servidor estiver em pé ou se o servidor não foi testado ainda.
#
# Autor: Felipe Rafael Prenholato - chronos@gentoobr.org
# IRC: nick chronos in #gentoo-br or #sancalivre at irc.freenode.net
# Data: 21 de Junho de 2006.
#
# Este script está coberto sobre a licença GPLv2 e disponível via
# pedido por e-mail. Qualquer alteração por favor envie para o criador
# do script.

# Variavel SERVIDORES: lista de servidores separados por espaço.
# Se colocar nomes em vez de IPs certifique-se de que o servidor em que o script
# rodar resolva o ip.
SERVIDORES="elise prime odissey"

# Variavel LISTA_EMAILS: lista de emails separados por espaço
LISTA_EMAILS="chronos@gentoobr.org philipe_rp@yahoo.com.br"

# Formato da data a ser enviada no e-mail.
data=$(date +"%T de %d/%m/%Y")

# função que pinga o servidor e envia email.
ping_server() {

# variaveis locais usadas
local pingreturn
local serversts
local TMPFILE
local server

server=$1
TMPFILE="/tmp/ping_$server.tmp"

# Debug
#echo "Servidor: $server"
#echo "Arquivo temporario: $TMPFILE"

# pinga servidor e pega retorno.
ping -c3 $server &>/dev/null;
pingreturn=$?;

# Debug
#echo "Ping retornou $pingreturn para $server"

# Se pingreturn for 0 o servidor foi pingado.
if [ "$pingreturn" == "0" ]
then
echo "1" > $TMPFILE
fi

# Se pingreturn for 1 o servidor não foi pingado.
if [ "$pingreturn" == "1" ]
then

# Se $TMPFILE não existir cria ele.
if ! [ -e $TMPFILE ]
then
# Debug
#echo "$TMPFILE não existe, criando com valor 1."
echo "1" > $TMPFILE
fi

# pega status do servidor, 1 é pingado, 0 é não pingado.
serversts=$(cat $TMPFILE)

# Debug
#echo "Valor de $TMPFILE: $serversts"

# se ele estava de pé (valor 1) caiu agora, grava valor 0 em
# $TMPFILE e manda email.
if [ "$serversts" == "1" ]
then

echo "0" > $TMPFILE
msg="Servidor $server fora do ar em $data. Contatar responsavéis."
ass="Servidor $server fora do ar."
LC_ALL="en_US.ISO-8859-1" echo "$msg" | mail -s "$ass" $LISTA_EMAILS
fi

fi

}

# roda ping_server para cada servidor.
for e in $(echo $SERVIDORES);
do
ping_server $e;
done

Ele precisa ser instalado em um servidor que possa pingar os demais e enviar emails. Versões antigas do postfix não vão funcionar, tem q suportar a opção -a no comando mail, seu uso é:



./script

Coloque ele para rodar no cron e fique numa boa :)


About this entry