Files
2026gaokaozhiyuan/deploy_fixed_q.py
T

76 lines
2.2 KiB
Python
Raw Normal View History

2026-06-24 13:11:34 +08:00
"""
重新部署修复后的问卷
"""
import paramiko, time, base64
NAS_HOST = "100.85.152.112"
NAS_PORT = 22
NAS_USER = "simon"
NAS_PASS = "Nas82829330"
NAS_DEPLOY_PATH = "/volume1/docker/gaokao-portal"
DOCKER = f"echo '{NAS_PASS}' | sudo -S /usr/local/bin/docker"
COMPOSE = f"{DOCKER} compose"
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect(NAS_HOST, NAS_PORT, NAS_USER, NAS_PASS, timeout=20)
def run(cmd, desc="", timeout=30):
if desc:
print(f"[{desc}]")
stdin, stdout, stderr = c.exec_command(cmd, timeout=timeout)
time.sleep(1)
ch = stdout.channel
out = b""
while not ch.exit_status_ready():
if ch.recv_ready():
out += ch.recv(4096)
time.sleep(0.2)
while ch.recv_ready():
out += ch.recv(4096)
result = out.decode().strip()
if result:
print(f" {result[:400]}")
return result
# 1. 上传修复后的 seed_data.py
with open("C:/Users/simon/WorkBuddy/2026-05-20-15-22-53/deploy/backend/seed_data.py", "rb") as f:
content = f.read()
b64_data = base64.b64encode(content).decode("ascii")
print("上传修复后的 seed_data.py...")
transport = c.get_transport()
ch = transport.open_session()
ch.exec_command("base64 -d > /tmp/seed_fixed.py")
ch.sendall(b64_data.encode())
ch.shutdown_write()
time.sleep(2)
ch.recv_exit_status()
run(f"cp /tmp/seed_fixed.py {NAS_DEPLOY_PATH}/backend/seed_data.py", "替换")
# 2. 删除旧数据库
db_path = f"{NAS_DEPLOY_PATH}/backend/data/gaokao.db"
run(f"rm -f {db_path}", "删除旧数据库")
# 3. 重新构建后端
run(f"cd {NAS_DEPLOY_PATH} && {COMPOSE} build backend --no-cache", "重新构建", timeout=180)
# 4. 启动
run(f"cd {NAS_DEPLOY_PATH} && {COMPOSE} up -d backend", "启动", timeout=60)
print("等待启动...")
time.sleep(15)
# 5. 检查
result = run(f"sqlite3 {db_path} 'SELECT id, title FROM questionnaires;'", "问卷列表")
print(f"\n问卷:\n{result}")
# 6. API
result = run("curl -s http://localhost:8080/api/questionnaires", "问卷API", timeout=15)
print(f"\nAPI:\n{result[:800]}")
# 7. 清理
run("rm -f /tmp/seed_fixed.py", "清理")
c.close()
print("\n完成!刷新问卷页面。")