| 873 | 1 #!/usr/bin/env python | 
|  | 2 | 
|  | 3 """ | 
|  | 4 wait for a process writing to stdout to keep an | 
|  | 5 (e.g.) ssh connection alive | 
|  | 6 """ | 
|  | 7 | 
|  | 8 import subprocess | 
|  | 9 import sys | 
|  | 10 import time | 
|  | 11 | 
|  | 12 KEEPALIVE = 300  # s | 
|  | 13 SLEEP = 1 | 
|  | 14 | 
|  | 15 | 
|  | 16 def main(args=sys.argv[1:]): | 
|  | 17     """CLI""" | 
|  | 18 | 
|  | 19     last = start = time.time() | 
|  | 20     proc = subprocess.Popen(args) | 
|  | 21 | 
|  | 22     while proc.poll() is None: | 
|  | 23         if time.time() - last > KEEPALIVE: | 
|  | 24             last = time.time() | 
|  | 25             print ("[{} s] waiting for process: {}".format(last-start, subprocess.list2cmdline(args))) | 
|  | 26             sys.stdout.flush() | 
|  | 27     exit(proc.poll()) | 
|  | 28 | 
|  | 29 if __name__ == '__main__': | 
|  | 30     main() |