Introduction
Introduction Statistics Contact Development Disclaimer Help
monitor.rc - monitor - monitor script
git clone git://git.suckless.org/monitor
Log
Files
Refs
LICENSE
---
monitor.rc (2199B)
---
1 #!/usr/local/plan9/bin/rc
2 #
3 # requires
4 # - 9base
5 # - ping
6 # - curl
7 # - netcat (nc)
8 # - dig
9 #
10 PATH=/usr/local/plan9/bin:$PATH
11
12 hosts=(\
13 suckless.org:88.99.169.165:[email protected]:1:1:1:1\
14 sta.li:88.99.169.165:[email protected]:1:1:0.0\
15 garbe.us:94.130.56.76:[email protected]:1:1:1:1\
16 flycyg.com:35.156.38.103:[email protected]:0:1:1:1\
17 )
18
19 fn ok {
20 line=$line^' 1'
21 html=$html^'<td class="ok">OK</td>'
22 }
23
24 fn fail {
25 line=$line^' 0'
26 if(~ $1 '1') {
27 html=$html^'<td class="fail">FAIL</td>'
28 failtext=$failtext^'['^$2^': FAIL]'
29 }
30 if not
31 html=$html^'<td class="na">NA</td>'
32 }
33
34 fn check_host {
35 ifs=(':') { pair=`{echo -n $1} }
36 host=$pair(1)
37 ip=$pair(2)
38 contact=$pair(3)
39 icmp_required=$pair(4)
40 http_required=$pair(5)
41 dns_required=$pair(6)
42 smtp_required=$pair(7)
43 failtext=''
44 line=`{date -n}
45 now=`{date -u}
46 html='<tr><td>'^$"now^'</td>'
47 # ICMP
48 if(ping -c 1 $host >/dev/null >[2]/dev/null)
49 ok
50 if not {
51 sleep 5
52 if(ping -c 1 $host >/dev/null >[2]/dev/null)
53 ok
54 if not
55 fail $icmp_required 'ICMP'
56 }
57 # HTTP
58 if(curl -I 'http://'^$host --connect-timeout 10 >/dev/null >[2]/…
59 ok
60 if not {
61 sleep 5
62 if(curl -I 'http://'^$host --connect-timeout 10 >/dev/nu…
63 ok
64 if not
65 fail $http_required 'HTTP'
66 }
67 # DNS
68 if(dig $host | grep -v '^;' | grep A | grep $ip >/dev/null >[2]/…
69 ok
70 if not {
71 sleep 5
72 if(dig $host | grep -v '^;' | grep A | grep $ip >/dev/nu…
73 ok
74 if not
75 fail $dns_required 'DNS'
76 }
77 # SMTP
78 if(nc -z -w 5 $host 25 >/dev/null >[2]/dev/null)
79 ok
80 if not {
81 sleep 5
82 if(nc -z -w 5 $host 25 >/dev/null >[2]/dev/null)
83 ok
84 if not
85 fail $smtp_required 'SMTP'
86 }
87 echo $line >> '/data/'^$host^'.dat'
88 gnuplot '/data/'^$host^'.gnu' > '/var/www/static/monitor.garbe.u…
89 html=$html^'<td><img src="'^$host^'.png"/></td></tr>'
90 echo $html >> /var/www/static/monitor.garbe.us/index.html
91 if(~ $failtext '')
92 ;
93 if not
94 echo $failtext | mail -s $host $contact
95 }
96
97 cat /var/www/static/monitor.garbe.us/head.tpl > /var/www/static/monitor.…
98 for(i in $hosts)
99 check_host $i
100 cat /var/www/static/monitor.garbe.us/foot.tpl >> /var/www/static/monitor…
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.