49 lines
945 B
Python
Executable File
49 lines
945 B
Python
Executable File
#!/usr/bin/env python
|
|
# $Id: heartbeat,v 1.2 2005/02/27 16:41:40 andreas Exp $
|
|
import sys, time, socket, os, signal
|
|
|
|
ADDR="204.29.161.33"
|
|
#ADDR="10.99.1.4"
|
|
PORT=50003
|
|
INTERVAL=10
|
|
|
|
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()
|