117 lines
3.7 KiB
Bash
117 lines
3.7 KiB
Bash
#!/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 配置是否正确"
|
|
|