DF-5730 / drive3.py
#!/usr/bin/env python3 """Control: enter DDB via sysctl, touch NOTHING, immediately continue.""" import os, socket, sys, threading, time SOCK = os.environ.get("SOCK", "/tmp/opencode/df-5730-ser.sock") DRAIN = os.environ.get("DRAIN", "/tmp/opencode/df-5730-drain3.log") def main(): while True: try: s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM); s.connect(SOCK); break except (FileNotFoundError, ConnectionRefusedError) as e: print(f"connect failed: {e}; retrying...", flush=True); time.sleep(2) def drainer(sock): with open(DRAIN, "ab", buffering=0) as d: while True: try: b = sock.recv(65536) except OSError: return if not b: return d.write(b); sys.stdout.write(b.decode("latin1")); sys.stdout.flush() threading.Thread(target=drainer, args=(s,), daemon=True).start() time.sleep(2) for line, w in [("x/x db_active", 4), ("c", 4)]: print(f"\n>>> {line!r}", flush=True) for i in range(0, len(line)+1, 8): s.sendall(line.encode()[i:i+8]); time.sleep(0.15) s.sendall(b"\n"); time.sleep(w) print("\n>>> control session complete", flush=True) if __name__ == "__main__": main() |