80 lines
2.8 KiB
Python
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 强制刷新")
|