120 lines
3.8 KiB
Bash
Executable File
120 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# FRPC 访问问题修复脚本
|
||
# 用于解决 http://156.225.27.52:5245/ 访问问题
|
||
|
||
HOST="156.225.27.52"
|
||
PORT="5204"
|
||
USER="root"
|
||
PASSWORD="Jsjj@8888"
|
||
|
||
echo "=========================================="
|
||
echo "FRPC 访问问题诊断和修复"
|
||
echo "=========================================="
|
||
echo ""
|
||
|
||
# 1. 测试 SSH 连接
|
||
echo "1. 测试 SSH 连接..."
|
||
if sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "echo 'SSH连接成功'" 2>/dev/null; then
|
||
echo "✅ SSH 连接正常"
|
||
else
|
||
echo "❌ SSH 连接失败,请检查:"
|
||
echo " - 服务器是否在线"
|
||
echo " - SSH 服务是否运行"
|
||
echo " - 端口 5204 是否开放"
|
||
exit 1
|
||
fi
|
||
|
||
# 2. 检查 FRPC 服务状态
|
||
echo ""
|
||
echo "2. 检查 FRPC 服务状态..."
|
||
FRPC_STATUS=$(sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "systemctl is-active frpc.service" 2>/dev/null)
|
||
if [ "$FRPC_STATUS" = "active" ]; then
|
||
echo "✅ FRPC 服务运行中"
|
||
else
|
||
echo "❌ FRPC 服务未运行,正在启动..."
|
||
sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "systemctl start frpc.service" 2>/dev/null
|
||
sleep 2
|
||
fi
|
||
|
||
# 3. 检查应用状态
|
||
echo ""
|
||
echo "3. 检查应用状态..."
|
||
APP_STATUS=$(sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "pm2 list | grep ai-chatbot" 2>/dev/null)
|
||
if [ -n "$APP_STATUS" ]; then
|
||
echo "✅ 应用运行中"
|
||
else
|
||
echo "❌ 应用未运行,请检查 PM2 状态"
|
||
fi
|
||
|
||
# 4. 检查 FRPC 配置
|
||
echo ""
|
||
echo "4. 检查 FRPC 配置..."
|
||
FRPC_CONFIG=$(sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "cat /etc/frp/frpc.ini | grep -A 6 'ai-chatbot'" 2>/dev/null)
|
||
echo "当前配置:"
|
||
echo "$FRPC_CONFIG"
|
||
|
||
# 5. 修复配置(确保使用 TCP 类型)
|
||
echo ""
|
||
echo "5. 修复 FRPC 配置..."
|
||
sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" << 'ENDSSH'
|
||
# 备份配置
|
||
cp /etc/frp/frpc.ini /etc/frp/frpc.ini.backup.$(date +%Y%m%d_%H%M%S)
|
||
|
||
# 删除旧的 ai-chatbot 配置
|
||
sed -i '/\[ai-chatbot\]/,+6d' /etc/frp/frpc.ini
|
||
|
||
# 添加正确的 TCP 配置
|
||
cat >> /etc/frp/frpc.ini << 'EOF'
|
||
|
||
[ai-chatbot]
|
||
name = ai-chatbot
|
||
type = tcp
|
||
local_ip = 127.0.0.1
|
||
local_port = 3001
|
||
remote_port = 5245
|
||
EOF
|
||
|
||
echo "配置已更新"
|
||
cat /etc/frp/frpc.ini | grep -B 2 -A 6 'ai-chatbot'
|
||
ENDSSH
|
||
|
||
# 6. 重启 FRPC 服务
|
||
echo ""
|
||
echo "6. 重启 FRPC 服务..."
|
||
sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "systemctl restart frpc.service && sleep 3" 2>/dev/null
|
||
|
||
# 7. 检查 FRPC 日志
|
||
echo ""
|
||
echo "7. 检查 FRPC 日志..."
|
||
sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "journalctl -u frpc.service --since '1 minute ago' --no-pager | grep -E 'ai-chatbot|start proxy|error' | tail -10" 2>/dev/null
|
||
|
||
# 8. 测试本地应用
|
||
echo ""
|
||
echo "8. 测试本地应用..."
|
||
LOCAL_TEST=$(sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "curl -s --max-time 5 http://localhost:3001 2>&1 | head -5" 2>/dev/null)
|
||
if [ -n "$LOCAL_TEST" ]; then
|
||
echo "✅ 本地应用响应正常"
|
||
echo "$LOCAL_TEST"
|
||
else
|
||
echo "❌ 本地应用无响应"
|
||
fi
|
||
|
||
# 9. 检查端口监听
|
||
echo ""
|
||
echo "9. 检查端口监听..."
|
||
sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -p "$PORT" "$USER@$HOST" "ss -tlnp | grep -E '3001|5245' || netstat -tlnp 2>/dev/null | grep -E '3001|5245'" 2>/dev/null
|
||
|
||
echo ""
|
||
echo "=========================================="
|
||
echo "诊断完成"
|
||
echo "=========================================="
|
||
echo ""
|
||
echo "如果问题仍然存在,请检查:"
|
||
echo "1. FRPS(FRP 服务端)是否正常运行"
|
||
echo "2. FRPS 是否配置了 5245 端口的 TCP 穿透"
|
||
echo "3. 防火墙是否开放了 5245 端口"
|
||
echo "4. 访问时使用完整 URL: http://156.225.27.52:5245/"
|
||
echo ""
|
||
|