-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmando_email.py
executable file
·60 lines (52 loc) · 1.71 KB
/
mando_email.py
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
import smtplib, os
from email.mime.text import MIMEText
fromaddr = "[email protected]"
toaddrs = "[email protected]"
monitored = {"NinuxFarm": '10.168.177.178' }
email = {
'subject': (
"Il nodo %s e' andato giu' ",
"Il nodo %s e' tornato su' "
),
'body' : (
"Cara manica de pippe,\n il nodo %s e' andato giu \n\nServizio Clienti Ninux.org",
"Cara manica de pippe,\n Il nodo %s e' tornato su \n\nServizio Clienti Ninux.org"
)
}
pingcmd = "ping -c 1 "
def get_state():
in_file = open("farm_state.txt","r")
farm_state = in_file.read()
in_file.close()
return farm_state
def set_state(state):
out_file = open("farm_state.txt","w")
out_file.write(state)
out_file.close()
def send_notification(name, status):
'''
name = nome del nodo
status = 0,1 ---> OFF, ON
'''
global fromaddr, toaddrs, email
print "Sending email..."
msg = MIMEText(email['body'][status] % name)
msg['Subject'] = email['subject'][status] % name
msg['From'] = fromaddr
msg['To'] = toaddrs
server = smtplib.SMTP('localhost')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, msg.as_string() )
server.quit()
for name,ip in monitored.items():
ping_status = os.system(pingcmd + ip) # 0-> up , >1 down
previous_state = get_state()
print "----"
print ( ping_status, previous_state )
print "----"
if ping_status > 0 and previous_state.find("on") >= 0:
send_notification(name, 0)
set_state('off')
elif ping_status == 0 and previous_state.find("off") >= 0:
send_notification(name, 1)
set_state('on')