#!/bin/bash # FRP 穿透服务状态检查脚本 echo "=========================================" echo "FRP 穿透服务状态检查" echo "=========================================" echo "" # 检查 frpc 进程 echo "1. 检查 frpc 进程状态..." if ps aux | grep -v grep | grep frpc > /dev/null; then echo " [OK] frpc 进程正在运行" ps aux | grep -v grep | grep frpc else echo " [FAIL] frpc 进程未运行" fi echo "" # 检查 frpc 配置 echo "2. 检查 frpc 配置文件..." if [ -f /etc/frp/frpc.toml ]; then echo " [OK] 配置文件存在: /etc/frp/frpc.toml" echo " 配置内容:" cat /etc/frp/frpc.toml | grep -A 5 "youyidian-3d" || echo " 未找到 youyidian-3d 配置" else echo " [FAIL] 配置文件不存在" fi echo "" # 检查本地应用端口 echo "3. 检查本地应用端口 (4320)..." if netstat -tlnp 2>/dev/null | grep -q ":4320" || ss -tlnp 2>/dev/null | grep -q ":4320"; then echo " [OK] 端口 4320 正在监听" netstat -tlnp 2>/dev/null | grep ":4320" || ss -tlnp 2>/dev/null | grep ":4320" else echo " [FAIL] 端口 4320 未监听" fi echo "" # 测试本地应用连接 echo "4. 测试本地应用连接..." if curl -s -o /dev/null -w "%{http_code}" --max-time 5 http://127.0.0.1:4320 > /tmp/curl_result.txt; then HTTP_CODE=$(cat /tmp/curl_result.txt) if [ "$HTTP_CODE" != "000" ]; then echo " [OK] 本地应用响应正常 (HTTP $HTTP_CODE)" else echo " [WARN] 本地应用无响应" fi else echo " [WARN] 无法连接到本地应用" fi echo "" # 检查 frps 服务器连接 echo "5. 检查 frps 服务器连接 (180.97.221.140:7000)..." FRPS_HOST="180.97.221.140" FRPS_PORT="7000" if command -v nc > /dev/null; then if timeout 3 nc -zv $FRPS_HOST $FRPS_PORT 2>&1 | grep -q "succeeded"; then echo " [OK] 可以连接到 frps 服务器" else echo " [FAIL] 无法连接到 frps 服务器 $FRPS_HOST:$FRPS_PORT" echo " 请检查:" echo " - frps 服务器是否运行" echo " - 网络连接是否正常" echo " - 防火墙是否阻止了连接" fi else echo " [WARN] nc 命令不可用,跳过连接测试" fi echo "" # 检查日志文件 echo "6. 检查 frpc 日志..." LOG_FILE="/root/frp/frpc.log" if [ -f "$LOG_FILE" ]; then LOG_SIZE=$(stat -c%s "$LOG_FILE" 2>/dev/null || echo "0") if [ "$LOG_SIZE" -gt 0 ]; then echo " [OK] 日志文件存在 ($LOG_SIZE 字节)" echo " 最近 10 行日志:" tail -10 "$LOG_FILE" 2>/dev/null | sed 's/^/ /' else echo " [WARN] 日志文件存在但为空" fi else echo " [WARN] 日志文件不存在: $LOG_FILE" fi echo "" # 测试公网地址连接 echo "7. 测试公网地址连接 (180.97.221.140:2320)..." PUBLIC_URL="http://180.97.221.140:2320" if curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$PUBLIC_URL" > /tmp/curl_public.txt 2>&1; then HTTP_CODE=$(cat /tmp/curl_public.txt) if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "301" ] || [ "$HTTP_CODE" = "302" ] || [ "$HTTP_CODE" = "307" ]; then echo " [OK] 公网地址可访问 (HTTP $HTTP_CODE)" else echo " [WARN] 公网地址返回异常状态码: $HTTP_CODE" fi else echo " [FAIL] 无法访问公网地址" echo " 错误信息:" cat /tmp/curl_public.txt 2>&1 | sed 's/^/ /' fi echo "" echo "=========================================" echo "检查完成" echo "=========================================" echo "" echo "如果公网地址无法访问,请检查:" echo "1. frps 服务器 (180.97.221.140:7000) 是否运行" echo "2. frpc 客户端配置是否正确" echo "3. 防火墙规则是否允许端口 2320" echo "4. 公网服务器上的 nginx 配置是否正确"