revamp for pushover

This commit is contained in:
2014-11-08 16:51:21 +01:00
parent 5548098a05
commit 3e370df280
+43 -5
View File
@@ -4,11 +4,28 @@
#
VER = 1.52
import time, os, string, sys, socket, atexit, select, SocketServer, getopt, signal, cPickle, smtplib, traceback, urllib
import time
import os
import string
import sys
import socket
import atexit
import select
import SocketServer
import getopt
import signal
import cPickle
import smtplib
import traceback
import urllib
import httplib
from subprocess import Popen, STDOUT, PIPE
SEND_EMAIL=False
SEND_PUSHOVER=True
False = 0
True = 1
LOGFILE = "/home/andreas/public_html/messages/andreas"
@@ -118,6 +135,8 @@ class Host:
def email(s, msg):
if not SEND_EMAIL:
return
ret = "OK"
toaddrs = AEMAIL
fromaddr = "aew.heartbeat@wrede.ca"
@@ -142,7 +161,19 @@ def email(s, msg):
return ret
#
def pushover(msg):
if not SEND_PUSHOVER:
return
conn = httplib.HTTPSConnection("api.pushover.net:443")
conn.request("POST", "/1/messages.json",
urllib.urlencode({
"token": "ac7NLX2rPjXFareeDgLpXNoDf4iFmf",
"user": "uDhH33UjQQDYtNzJb1ThRiWb9ingGK",
"message": msg,
}), { "Content-type": "application/x-www-form-urlencoded" })
conn.getresponse()
# nsupdate: set the DNS A record for a fqdn
# return: None if ok, else error text
def nsupdate(hostname, newip):
@@ -176,7 +207,6 @@ answer
return output
#
#
def dur(sec):
sec = int(sec)
@@ -190,7 +220,6 @@ def dur(sec):
return "0:%02d" % s
#
#
def addhost(name, addr):
sname = shortname(name)
@@ -268,6 +297,7 @@ def checkoverdue():
m = "%s is overdue" % h
if h in watchhosts:
email("overdue", m)
pushover(m)
hosts[h].newstate(Host.overdue, grace)
log(m)
@@ -382,6 +412,7 @@ def fromaddr(name, addr, boot, interval, acks):
log(m)
if name in watchhosts:
email("address change", m)
pushover(m)
host.lastbeat = now
if host.getstate() != Host.up and interval > 0:
@@ -391,6 +422,7 @@ def fromaddr(name, addr, boot, interval, acks):
log(m)
if name in watchhosts:
email("back", name)
pushover("%s is back" % name)
host.upcount += 1
@@ -447,17 +479,21 @@ def readsock():
log(m)
if name in watchhosts:
email("booted", m)
pushover(m)
if msg:
m = "%s msg: %s" % (name, msg)
log(m, service=service)
if name in watchhosts:
email("msg", m)
pushover(m)
fromaddr(name, addr[0], boot, interval, acks)
if shutdown:
m = "%s shutdown" % name
log(m)
if name in watchhosts:
email("shutdown", m)
pushover(m)
try:
hosts[name].newstate(Host.down)
except:
@@ -471,7 +507,9 @@ def readsock():
rmsg="ACK"
if len(hosts[name].cmds):
rmsg=hosts[name].cmds[0]
email("%s cmd exec" % name, "command '%s' initiated" % hosts[name].cmds[0])
msg="command '%s' initiated" % hosts[name].cmds[0]
email("%s cmd exec" % name, msg)
pushover(msg)
del hosts[name].cmds[0]
log("%s command initiated" % name)
try: