#!/usr/bin/env python # $Id: hbc,v 1.1 2005/07/14 19:28:59 andreas Exp $ import sys, time, socket, os, signal ADDR="204.29.161.33" #ADDR="10.99.1.4" PORT=50003 INTERVAL=20 def handler(signum, frame): global up if signum == 1: os.execv("/usr/bin/env", ["python", sys.argv[0],"relaunch"]) if up == 0: return sys.exit(0) iam=socket.gethostname() sock=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) msg="interval=%s;name=%s" % (INTERVAL, iam) if len(sys.argv) <= 1 or sys.argv[1] != "relaunch": msgboot="boot=1;interval=%s;name=%s" % (INTERVAL, iam) while 1: try: sock.sendto(msgboot, (ADDR, PORT)) break except: time.sleep(10) up=1 signal.signal(signal.SIGTERM, handler) signal.signal(signal.SIGHUP, handler) while up: try: time.sleep(10) except: break try: sock.sendto(msg, (ADDR, PORT)) except: pass up=0 msg="shutdown=1;name=%s" % (iam) sock.sendto(msg, (ADDR, PORT)) time.sleep(1) sock.close()