From 9054da954a6645e274da51e5ae6016a56f8ef204 Mon Sep 17 00:00:00 2001 From: cnbugs Date: Mon, 10 Aug 2026 00:19:20 +0800 Subject: [PATCH] Add diag-connlogs.sh diagnostic script --- scripts/diag-connlogs.sh | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 scripts/diag-connlogs.sh diff --git a/scripts/diag-connlogs.sh b/scripts/diag-connlogs.sh new file mode 100755 index 0000000..69966b6 --- /dev/null +++ b/scripts/diag-connlogs.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# 连接日志一键诊断脚本 +# 在生产服务器上以 root 执行: bash /opt/openvpn-manager/scripts/diag-connlogs.sh +set -u +echo "==========================================" +echo " OpenVPN Manager 连接日志诊断" +echo "==========================================" + +echo "" +echo "[1] 服务运行状态:" +ps -ef | grep -E "openvpn-manager|openvpn " | grep -v grep || echo " (无进程)" + +echo "" +echo "[2] 当前代码版本:" +cd /opt/openvpn-manager 2>/dev/null && git log --oneline -3 || echo " git log 失败" + +echo "" +echo "[3] 二进制构建时间:" +ls -la /opt/openvpn-manager/bin/openvpn-manager 2>/dev/null | awk '{print " "$6,$7,$8,$9}' + +echo "" +echo "[4] status.log 文件:" +find /opt/openvpn-manager/data/instances -name "status.log" 2>/dev/null | while read f; do + echo " 路径: $f" + echo " 大小: $(stat -c%s "$f") 字节" + echo " 内容前 6 行:" + head -6 "$f" | sed 's/^/ /' + echo " ----" +done + +echo "" +echo "[5] 直接登录 API:" +LOGIN_RESP=$(curl -s http://localhost:8089/api/login -X POST -H 'Content-Type: application/json' -d '{"username":"admin","password":"admin123"}') +echo " 响应: $LOGIN_RESP" +TOKEN=$(echo "$LOGIN_RESP" | grep -oP '"token":"\K[^"]+') +echo " TOKEN 长度: ${#TOKEN}" + +if [ -z "$TOKEN" ]; then + echo " ✗ 登录失败,无法继续" + exit 1 +fi + +echo "" +echo "[6] 调用 /api/connlogs:" +RESP=$(curl -s "http://localhost:8089/api/connlogs" -H "Authorization: Bearer $TOKEN") +echo " 响应: $RESP" + +echo "" +echo "[7] 解析日志条目数:" +echo "$RESP" | grep -oP '"common_name":"[^"]+"' | wc -l | awk '{print " 共 "$1" 条连接记录"}' + +echo "" +echo "[8] 关键检查:" +echo "$RESP" | grep -q '"_diag"' && echo " ✓ 返回了新格式(带 _diag)" || echo " ✗ 旧格式,说明后端代码未更新" +echo "$RESP" | grep -q '"logs"' && echo " ✓ logs 字段存在" || echo " ✗ 缺 logs 字段" + +echo "" +echo "==========================================" +echo " 诊断完成" +echo "==========================================" \ No newline at end of file