075c21d01eed610dc6f6c27a0bf50091

A simple bash script that send a mail if a set Host is down, simple by pinging it in a time interval.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash
# Host checker 0.6
# original idea by no0tic
# modified by motoplux

#Hosts list
HOST[1]=192.168.1.1;
HOSTname[1]=link1;
HOST[2]=192.168.0.1;
HOSTname[2]=link2;
HOST[3]=192.168.0.5;
HOSTname[3]=link3;
HOST[4]=192.168.0.100;
HOSTname[4]=link4;

# number of hosts
NHOST=4;

# email Subject
SUBJECT="Segnalazione problema Host"
# email To
EMAIL="miamail@quelloched'è"

for i in $(seq 1 $NHOST); do
	fail[$i]=0;
done	

while [ 1 ]; do
	#do 1 ping to localhost	
	ping -c 1 localhost > /dev/null ;
	if [[ "$?" -eq 0 ]]
	then
		for i in $(seq 1 $NHOST); do
			#do 1 ping to host		
			ping -c 1 ${HOST[$i]} > /dev/null ;
	   		if ! [[ "$?" -eq 0 ]]
				then 
					if [[ "${fail[$i]}" -eq 0 ]] 
						then 			
							#play alarm.wav;
							#display alarm in terminal
							echo "Problemi all'host ${HOST[$i]} alias ${HOSTname[$i]}";
							# send an email using mail
							echo "Problemi all'host ${HOST[$i]} alias ${HOSTname[$i]}" | mail -s "$SUBJECT" "$EMAIL"
							fail[$i]=1;
					fi
				else
					fail[$i]=0;
			fi
  					
		done			
		
	   #time in seconds before repeating ping		  
	   #sleep 3;
	else
		echo "Problemi di host locale";
		exit -1;
	fi
done

Refactorings

No refactoring yet !

B1dfee65f88365844ae8979a67d7b6f7

Paolo Campegiani

December 14, 2007, December 14, 2007 09:06, permalink

No rating. Login to rate!

No need to reinvent the wheel, better if you use monit for simple host checking and mail notification.

Your refactoring





Format Copy from initial code

or Cancel