add a directory for running nagios scale/performance tests
[monitor.git] / nagios / actions / mail.py
1 #!/usr/bin/python
2
3 import time
4 import sys
5 import os
6
7 host_msg = """***** MyOpsNagios %(hostnotificationnumber)s *****
8         
9 Notification Type: %(notificationtype)s
10
11 Host: %(hostname)s
12 State: %(hoststate)s
13 Address: %(hostaddress)s
14 Info: %(hostoutput)s
15
16 Date/Time: %(longdatetime)s"""
17
18 service_msg = """***** MyOpsNagios %(servicenotificationnumber)s %(hostnotificationnumber)s *****
19
20 Notification Type: %(notificationtype)s
21
22 Service: %(servicedesc)s
23 Host: %(hostalias)s
24 Address: %(hostaddress)s
25 State: %(servicestate)s
26
27 Date/Time: %(longdatetime)s
28
29 Additional Info:
30
31     http://pl-service-04.cs.princeton.edu/nagios/cgi-bin/trends.cgi?host=%(hostalias)s&service=%(servicedesc)s
32     http://pl-service-04.cs.princeton.edu/nagios/cgi-bin//status.cgi?hostgroup=%(hostalias)s&style=detail
33
34 %(serviceoutput)s"""
35
36
37 def argv_to_dict(argv):
38     """
39         NOTE: very bare-bones, no error checking, will fail easily.
40     """
41     d = {}
42     prev=None
43     for a in argv:
44         if "--" in a:
45             prev = a[2:]
46         else:
47             d[prev] = a
48     return d
49
50 if __name__ == '__main__':
51     f = open("/tmp/myopsmail", 'a')
52     f.write("mail %s %s\n" % (time.time(), " ".join(sys.argv[1:])))
53     f.close()
54
55     d = argv_to_dict(sys.argv[1:])
56     #print d.keys()
57     if 'host' in d:
58
59         msg = host_msg % d
60         subject = """ "** %(notificationtype)s Host Alert: %(hostname)s is %(hoststate)s **" """ % d
61     else:
62
63         msg = service_msg % d
64         if 'contactgroupname' in d:
65             subject = """ "** %(notificationtype)s Service Alert: %(contactgroupname)s %(hostalias)s/%(servicedesc)s is %(servicestate)s **" """ % d
66         else:
67             subject = """ "** %(notificationtype)s Service Alert: %(hostalias)s/%(servicedesc)s is %(servicestate)s **" """ % d
68
69
70
71     f = os.popen("""/bin/mail -S replyto=monitor@planet-lab.org -s %s %s""" % (subject, d['contactemail']), 'w')
72     f.write(msg)
73
74
75 #        command_line="""/usr/bin/printf "%%b" "***** MyOpsNagios %(hostnotificationnumber)s *****\\n\\nNotification Type: %(notificationtype)s\\nHost: %(hostname)s\\nState: %(hoststate)s\\nAddress: %(hostaddress)s\\nInfo: %(hostoutput)s\\n\\nDate/Time: %(longdatetime)s\\n" | /bin/mail -S replyto=monitor@planet-lab.org -s "** %(notificationtype)s Host Alert: %(hostname)s is %(hoststate)s **" %(contactemail)s""" % d
76         #command_line="""/usr/bin/printf "%%b" "***** MyOpsNagios %(servicenotificationnumber)s %(hostnotificationnumber)s *****\\n\\nNotification Type: %(notificationtype)s\\n\\nService: %(servicedesc)s\\nHost: %(hostalias)s\\nAddress: %(hostaddress)s\\nState: %(servicestate)s\\n\\nDate/Time: %(longdatetime)s\\n\\nAdditional Info:\\n\\n%(serviceoutput)s" | /bin/mail -S replyto=monitor@planet-lab.org -s "** %(notificationtype)s Service Alert: %(hostalias)s/%(servicedesc)s is %(servicestate)s **" %(contactemail)s""" % d
77     #os.system(command_line)
78
79