Files

44 lines
1.2 KiB
Python
Raw Permalink Normal View History

2026-06-24 13:11:34 +08:00
import paramiko, time
NAS_HOST = "100.85.152.112"
NAS_PORT = 22
NAS_USER = "simon"
NAS_PASS = "Nas82829330"
NAS_DEPLOY_PATH = "/volume1/docker/gaokao-portal"
DOCKER_BIN = "/usr/local/bin/docker"
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect(NAS_HOST, NAS_PORT, NAS_USER, NAS_PASS, timeout=20)
# 使用 shell 执行
def shell(cmd):
"""通过 shell 执行,返回完整输出"""
transport = c.get_transport()
channel = transport.open_session()
channel.get_pty() # 获取 PTY
channel.exec_command(cmd)
# 读取输出
out = b""
while True:
if channel.recv_ready():
out += channel.recv(4096)
if channel.exit_status_ready():
break
time.sleep(0.5)
while channel.recv_ready():
out += channel.recv(4096)
return out.decode("utf-8", errors="replace")
# 1. 检查容器状态
print(shell(f"echo {NAS_PASS} | sudo -S {DOCKER_BIN} ps -a"))
# 2. 检查后端是否在运行
print(shell(f"echo {NAS_PASS} | sudo -S {DOCKER_BIN} ps | grep backend"))
# 3. 启动后端并查看日志
print(shell(f"cd {NAS_DEPLOY_PATH} && echo {NAS_PASS} | sudo -S {DOCKER_BIN} compose logs backend 2>&1 | tail -30"))
c.close()