Files
soul-yongping/scripts/restart_soul_correctly.py
2026-02-05 11:35:57 +08:00

80 lines
2.8 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import paramiko
import time
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('42.194.232.22', port=22022, username='root', password='Zhiqun1984', timeout=15)
print("=== 1. 杀死所有相关进程 ===")
cmd = "kill -9 1822 2>/dev/null || echo 'Process 1822 already killed'"
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
print(result)
time.sleep(1)
print("\n=== 2. 确认端口清理完成 ===")
cmd = "ss -tlnp | grep ':300' || echo '[OK] All ports cleared'"
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
print(result)
print("\n=== 3. 删除 PM2 soul 配置 ===")
cmd = "pm2 delete soul 2>&1"
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
result = result.encode('ascii', errors='replace').decode('ascii')
print(result)
time.sleep(1)
print("\n=== 4. 使用正确配置重新启动 ===")
cmd = """cd /www/wwwroot/soul && PORT=30006 pm2 start server.js --name soul --update-env 2>&1"""
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
result = result.encode('ascii', errors='replace').decode('ascii')
print(result)
time.sleep(3)
print("\n=== 5. 检查 PM2 状态 ===")
cmd = "pm2 status soul 2>&1"
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
result = result.encode('ascii', errors='replace').decode('ascii')
print(result)
print("\n=== 6. 确认端口 30006 监听 ===")
cmd = "ss -tlnp | grep ':30006'"
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
print(result if result else "[X] Port 30006 not listening!")
print("\n=== 7. 测试 HTTP 响应 ===")
cmd = "curl -I http://127.0.0.1:30006 2>&1 | head -5"
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
print(result)
print("\n=== 8. 查看最新日志 ===")
cmd = "pm2 logs soul --lines 10 --nostream 2>&1 | tail -15"
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
result = result.encode('ascii', errors='replace').decode('ascii')
print(result)
print("\n=== 9. 保存 PM2 配置 ===")
cmd = "pm2 save 2>&1"
stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
result = stdout.read().decode('utf-8', errors='replace')
result = result.encode('ascii', errors='replace').decode('ascii')
print(result)
client.close()
print("\n" + "=" * 60)
print("完成!请在浏览器访问: https://soul.quwanzhi.com")
print("如果仍是空白,按 Ctrl+Shift+R 强制刷新")