wait_for: Added script to wait for a service to come up

master
Dustin 2017-04-06 10:08:22 -05:00
parent 5537be6a76
commit fd0958e6eb
1 changed files with 60 additions and 0 deletions

60
wait_for.py Executable file
View File

@ -0,0 +1,60 @@
#!/usr/bin/env python
import argparse
import socket
import time
import os
import signal
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
'--timeout', '-t',
type=int,
metavar='SECONDS',
help='Number of seconds to wait for host',
)
parser.add_argument(
'host',
help='Remote host name',
)
parser.add_argument(
'service',
nargs='?',
default='ssh',
help='Service/port on remote host',
)
return parser.parse_args()
def wait_for(host, service, timeout=None):
if timeout:
deadline = time.time() + timeout
else:
deadline = None
while True:
try:
sock = socket.create_connection((host, service))
except socket.error:
if deadline and time.time() >= deadline:
break
time.sleep(1)
else:
sock.close()
return True
return False
def main():
args = parse_args()
try:
if not wait_for(args.host, args.service, args.timeout):
raise SystemExit(1)
except KeyboardInterrupt:
signal.signal(signal.SIGINT, signal.SIG_DFL)
os.kill(os.getpid(), signal.SIGINT)
if __name__ == '__main__':
main()