"""ctl.py -- send operator commands to a running relay's control port. Usage: python ctl.py [more commands...] The shared secret is read from content/operator_secret.txt, same as the relay. """ import os import socket import sys import time CONTENT = r"C:\git\bt411\content" SECRET = open(os.path.join(CONTENT, "operator_secret.txt"), encoding="utf-8").read().strip() s = socket.create_connection(("127.0.0.1", 1507), timeout=5) s.settimeout(3.0) s.sendall(("AUTH %s\n" % SECRET).encode()) time.sleep(0.4) for cmd in sys.argv[1:]: s.sendall((cmd + "\n").encode()) print("sent: %s" % cmd) time.sleep(0.4) # drain whatever the relay says back time.sleep(0.6) try: while True: data = s.recv(4096) if not data: break sys.stdout.write(data.decode("utf-8", "replace")) except socket.timeout: pass s.close()