import popen2 import re import smtplib #from SMSRomandie import * # see http://seriot.ch/SMSRomandie SMTP_SERVER = 'smtp.example.net' SMTP_USER = 'username' SMTP_PASS = 'password' def mail(sender, to, subject, text): headers = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (sender, to, subject) message = headers + text session = smtplib.SMTP(SMTP_SERVER) session.login(SMTP_USER, SMTP_PASS) result = session.sendmail(sender, to, message) session.quit() return result == {} # no error def can_ping(host): ping_status = False try: (stdout, stdin, stderr) = popen2.popen3("/sbin/ping -q -c2 " + host) ping_stats = stdout.readlines()[3].rstrip() p = re.compile("\d+ packets transmitted, \d+ packets received, (\d+)% packet loss") packets_lost = int(re.findall(p, ping_stats)[0]) ping_status = packets_lost == 0 except: pass return ping_status host = 'macmini.local' if not can_ping(host): email_was_sent = mail("from@example.net", 'to@example.net', "Message from ping bot", "Can't ping %s." % host) print "email_was_sent:", email_was_sent #sms_was_sent = SMSRomandie().send('+41781234567', "ping bot can't ping %s" % host) #print "sms_was_sent:", sms_was_sent