Chronos Inside
21 junho, 2006
  Alertar caso servidores caiam!
Ai em baixo meu script pingping. Ele vai alertar os emails quando algum servidor parar. Leia ele :).

 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

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 no cron e fique de boa ;-)
 
Comments: Postar um comentário



<< Home
putz...precisa disso. Bem, aqui quero falar muito pouco sobre minha vida pessoal, e principalmente sobre programação, linux, e coisas relacionadas. tem espaço ainda para bike, que eu amo!

ARCHIVES
fevereiro 2006 / março 2006 / abril 2006 / junho 2006 / agosto 2006 / maio 2007 /


Powered by Blogger