revamp for pushover
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user