1 #!/bin/sh
2 # Este script pinga servidores na lista da variavel SERVIDORES e envia
3 # emails para os emails da lista da variavel LISTA_EMAILS alertando caso
4 # eles caiam. O script só alerta se na última vez que ele testou o
5 # servidor estiver em pé ou se o servidor não foi testado ainda.
6 #
7 # Autor: Felipe Rafael Prenholato <chronos@gentoobr.org>
8 # IRC: nick chronos in #gentoo-br or #sancalivre at irc.freenode.net
9 # Data: 21 de Junho de 2006.
10 #
11 # Este script está coberto sobre a licença GPLv2 e disponível via
12 # pedido por e-mail. Qualquer alteração por favor envie para o criador
13 # do script.
14
15
16 # Variavel SERVIDORES: lista de servidores separados por espaço.
17 # Se colocar nomes em vez de IPs certifique-se de que o servidor em que o script
18 # rodar resolva o ip.
19 SERVIDORES="chicobento portalabipti"
20
21 # Variavel LISTA_EMAILS: lista de emails separados por espaço
22 LISTA_EMAILS="felipe.prenholato@mzo.com.br patrick@mzo.com.br paulo@mzo.com.br deivid@mzo.com.br felipe@nemo.intranet.mzo.com.br"
23 #LISTA_EMAILS="chronos@gentoobr.org felipe@nemo.intranet.mzo.com.br felipe.prenholato@mzo.com.br"
24
25 # Formato da data a ser enviada no e-mail.
26 data=$(date +"%T de %d/%m/%Y")
27
28 # função que pinga o servidor e envia email.
29 ping_server() {
30
31 # variaveis locais usadas
32 local pingreturn
33 local serversts
34 local TMPFILE
35 local server
36
37 server=$1
38 TMPFILE="/tmp/ping_$server.tmp"
39
40 # Debug
41 #echo "Servidor: $server"
42 #echo "Arquivo temporario: $TMPFILE"
43
44 # pinga servidor e pega retorno.
45 ping -c3 $server &>/dev/null;
46 pingreturn=$?;
47
48 # Debug
49 #echo "Ping retornou $pingreturn para $server"
50
51 # Se pingreturn for 0 o servidor está de pé.
52 if [ "$pingreturn" == "0" ]
53 then
54 echo "1" > $TMPFILE
55 fi
56
57 # Se pingreturn for 1 o servidor não foi pingado.
58 if [ "$pingreturn" == "1" ]
59 then
60
61 # Se $TMPFILE não existir cria ele.
62 if ! [ -e $TMPFILE ]
63 then
64 # Debug
65 #echo "$TMPFILE não existe, criando com valor 1."
66 echo "1" > $TMPFILE
67 fi
68
69 # pega status do servidor, 1 é pingado, 0 é não pingado.
70 serversts=$(cat $TMPFILE)
71
72 # Debug
73 #echo "Valor de $TMPFILE: $serversts"
74
75 # se ele estava de pé (valor 1) caiu agora, grava valor 0 em
76 # $TMPFILE e manda email.
77 if [ "$serversts" == "1" ]
78 then
79
80 echo "0" > $TMPFILE
81 msg="Servidor $server fora do ar em $data. Contatar responsavéis."
82 ass="Servidor $server fora do ar."
83 LC_ALL="en_US.ISO-8859-1" echo "$msg" | mail -s "$ass" $LISTA_EMAILS
84
85 fi
86
87 fi
88
89 }
90
91 # roda ping_server para cada servidor.
92 for e in $(echo $SERVIDORES);
93 do
94 ping_server $e;
95 done
./script