Files
heartbeat/hbc
T
2005-07-14 19:28:59 +00:00

49 lines
939 B
Python
Executable File

#!/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()