import paramiko import sys sys.stdout.reconfigure(encoding="utf-8", errors="replace") VERIFY = r""" import sqlite3, urllib.request, urllib.parse, http.cookiejar, json, os db = "/opt/qihuo/futures.db" print("db", db) conn = sqlite3.connect(db) conn.row_factory = sqlite3.Row pending = conn.execute( "SELECT id, symbol, direction, vt_order_id, status FROM trade_order_monitors WHERE status='pending'" ).fetchall() print("pending_monitors", len(pending)) for r in pending: print(dict(r)) jar = http.cookiejar.CookieJar() op = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar)) user = pwd = "" for line in open("/opt/qihuo/.env"): line = line.strip() if line.startswith("ADMIN_USERNAME="): user = line.split("=", 1)[1].strip().strip('"').strip("'") if line.startswith("ADMIN_PASSWORD="): pwd = line.split("=", 1)[1].strip().strip('"').strip("'") op.open(urllib.request.Request( "http://127.0.0.1:6600/login", urllib.parse.urlencode({"username": user, "password": pwd}).encode(), )) raw = op.open("http://127.0.0.1:6600/api/trading/live").read().decode() data = json.loads(raw) orders = data.get("active_orders") or [] cj = [o for o in orders if "CJ" in (o.get("symbol_code") or "").upper()] print("active_orders", len(orders), "cj_orders", len(cj)) if cj: print("cj detail", cj) else: print("VERIFY PASS") """ c = paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect("192.168.8.21", username="root", password="woaini88", timeout=15) sftp = c.open_sftp() with sftp.open("/tmp/verify_pending_fix.py", "w") as f: f.write(VERIFY) sftp.close() _, stdout, stderr = c.exec_command("/opt/qihuo/venv/bin/python /tmp/verify_pending_fix.py") print(stdout.read().decode("utf-8", errors="replace")) print(stderr.read().decode("utf-8", errors="replace")) c.close()