• MJJYYDS

    刚刚把内网agent链接内网docker主控的链接地址从默认公网域名改成了内网地址

    让AI写了一个agent命令方便观察agent状态,分享下。。。

    查询命令:```
    sh -c '
    echo "==================== Komari Agent 连接体检 ===================="
    echo ""

    if [ -f /etc/openwrt_release ]; then
    OS="OpenWrt"
    PROCS=$(ps w 2>/dev/null | grep -i "komari/agent" | grep -v grep)
    PID=$(echo "$PROCS" | awk "{print \$1}" | head -1)
    [ -n "$PID" ] && CMDLINE=$(tr "\0" " " < /proc/$PID/cmdline 2>/dev/null) || CMDLINE=""
    CONN=$(netstat -tn 2>/dev/null | grep -E "ESTAB|SYN_SENT")
    RAWLOG=$(logread 2>/dev/null)
    else
    OS="Debian"
    PROCS=$(ps aux 2>/dev/null | grep -i "komari/agent" | grep -v grep)
    PID=$(echo "$PROCS" | awk "{print \$2}" | head -1)
    [ -n "$PID" ] && CMDLINE=$(tr "\0" " " < /proc/$PID/cmdline 2>/dev/null) || CMDLINE=""
    CONN=$(ss -tn 2>/dev/null | grep -E "ESTAB|SYN_SENT")
    RAWLOG=$(journalctl -u komari-agent --no-pager 2>/dev/null)
    fi

    SEP="────────────────────────────────────────────────"
    ESC=$(printf "\033")
    R="${ESC}[0m"
    RED="${ESC}[0;31m"
    GREEN="${ESC}[1;32m"
    YELLOW="${ESC}[1;33m"
    CYAN="${ESC}[1;36m"

    echo "【系统类型】${CYAN}$OS${R}"
    echo "$SEP"

    AGENT_V4=$(echo "$RAWLOG" | grep "Get IPV4 Success" | tail -1 | sed -E "s/.Get IPV4 Success: ([^ ]+).*/\1/")
    AGENT_V6=$(echo "$RAWLOG" | grep "Get IPV6 Success" | tail -1 | sed -E "s/.Get IPV6 Success: ([^ ]+).*/\1/")

    echo "【Agent 上报 IP】"
    [ -n "$AGENT_V4" ] && echo " IPv4: ${GREEN}$AGENT_V4${R}" || echo " IPv4: ${RED}未上报${R}"
    [ -n "$AGENT_V6" ] && echo " IPv6: ${GREEN}$AGENT_V6${R}" || echo " IPv6: ${RED}未上报${R}"
    echo "$SEP"

    echo "【Agent 进程】"
    if [ -n "$PID" ]; then
    echo " ${GREEN}✅ 运行中${R} (PID: ${YELLOW}$PID${R})"
    echo " 完整命令行:"
    echo "$CMDLINE" | sed "s/^/ /"
    else
    echo " ${RED}❌ 未运行${R}"
    fi
    echo "$SEP"

    echo "【安全与更新】"
    if [ -n "$CMDLINE" ]; then
    echo "$CMDLINE" | grep -q -- "--disable-web-ssh" && echo " 🔒 SSH 远程控制: ${GREEN}✅ 已禁用(安全)${R}" || echo " 🔓 SSH 远程控制: ${YELLOW}⚠️ 未禁用(存在安全风险)${R}"
    echo "$CMDLINE" | grep -q -- "--disable-auto-update" && echo " 🔒 自动更新: ${GREEN}✅ 已禁用(版本可控)${R}" || echo " 🔄 自动更新: ${YELLOW}⚠️ 未禁用(可能自动升级)${R}"

    MONTH_ROTATE=$(echo "$CMDLINE" | grep -oE "\-\-month-rotate [^ ]+" | awk "{print \$2}")
    if [ -n "$MONTH_ROTATE" ]; then
    echo " 📅 流量重置日: ${YELLOW}★ 每月 $MONTH_ROTATE 号 ★${R}"
    else
    echo " 📅 流量重置日: 未设置"
    fi
    else
    echo " ❓ Agent 未运行,无法判断"
    fi
    echo "$SEP"

    ENDPOINT=""
    if [ -n "$CMDLINE" ]; then
    ENDPOINT=$(echo "$CMDLINE" | grep -oE "\-e [^ ]+" | awk "{print \$2}")
    [ -z "$ENDPOINT" ] && ENDPOINT=$(echo "$CMDLINE" | grep -oE "\-\-endpoint [^ ]+" | awk "{print \$2}")
    fi

    echo "【配置的主控地址】"
    if [ -n "$ENDPOINT" ]; then
    echo " ${CYAN}$ENDPOINT${R}"
    HOST=$(echo "$ENDPOINT" | sed -E "s|^https?://||; s|/.||; s|:.||")
    PORT=$(echo "$ENDPOINT" | grep -oE ":[0-9]+" | tr -d ":")
    [ -z "$PORT" ] && PORT=$(echo "$ENDPOINT" | grep -q "^https" && echo 443 || echo 80)
    echo " 解析:主机=${CYAN}$HOST${R} 端口=${YELLOW}$PORT${R}"
    else
    echo " ❓ 无法从命令行提取 endpoint"
    fi
    echo "$SEP"

    echo "【主控连接】"
    if [ -n "$HOST" ] && [ -n "$PORT" ]; then
    HOST_IPS=""
    if echo "$HOST" | grep -qE "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\$"; then
    HOST_IPS="$HOST"
    else
    HOST_IPS=$(nslookup "$HOST" 2>/dev/null | awk "/^Address: / {print \$2}" | grep -v ":" | head -5)
    [ -z "$HOST_IPS" ] && HOST_IPS=$(getent hosts "$HOST" 2>/dev/null | awk "{print \$1}" | head -5)
    fi

    FOUND=""
    for ip in $HOST_IPS; do
    MATCH=$(echo "$CONN" | grep -E "$ip:$PORT")
    [ -n "$MATCH" ] && { FOUND="$MATCH"; break; }
    done
    [ -z "$FOUND" ] && FOUND=$(echo "$CONN" | grep -E "$HOST:$PORT")

    if [ -n "$FOUND" ]; then
    echo " ${GREEN}✅ 已连接${R}"
    echo "$FOUND" | while IFS= read -r l; do echo " ${GREEN}$l${R}"; done
    else
    MATCH=$(echo "$CONN" | grep ":$PORT " | head -3)
    if [ -n "$MATCH" ]; then
    echo " ${YELLOW}⚠️ 发现到端口 $PORT 的连接(可能已连接,请人工确认)${R}"
    echo "$MATCH" | while IFS= read -r l; do echo " ${YELLOW}$l${R}"; done
    else
    echo " ${RED}❌ 未发现到 $HOST:$PORT 的 ESTABLISHED 连接${R}"
    fi
    fi
    else
    echo " ❓ 无法判断(未解析到 endpoint)"
    fi
    echo "$SEP"

    echo "【连接类型】"
    if [ -n "$ENDPOINT" ]; then
    if echo "$ENDPOINT" | grep -q "192.168.2.100:25778"; then
    echo " ${GREEN}✅ 内网直连模式(推荐,不受公网波动影响)${R}"
    elif echo "$ENDPOINT" | grep -qE "okokok.eu.org|https://&quot;; then
    echo " ${YELLOW}⚠️ 公网 Cloudflare 模式(受国际线路质量影响)${R}"
    else
    echo " ❓ 其他模式:$ENDPOINT"
    fi
    else
    echo " ❓ 无法判断"
    fi
    echo "$SEP"

    echo "【超时/重连统计】"
    if [ "$OS" = "OpenWrt" ]; then
    n=$(echo "$RAWLOG" | grep -E "komari|agent\[" | grep -cE "TLS handshake timeout|i/o timeout|Retrying websocket|context deadline exceeded")
    printf " OpenWrt 日志中的超时次数:%3s 次\n" "$n"
    else
    for m in 10 30 60; do
    n=$(journalctl -u komari-agent --since "${m} min ago" --no-pager 2>/dev/null | grep -cE "TLS handshake timeout|i/o timeout|Retrying websocket|context deadline exceeded")
    if [ "$n" -eq 0 ]; then tag="${GREEN}✅ 非常稳定${R}"
    elif [ "$n" -le 2 ]; then tag="${YELLOW}🟡 基本稳定${R}"
    elif [ "$n" -le 10 ]; then tag="${YELLOW}⚠️ 有波动${R}"
    else tag="${RED}❌ 频繁掉线${R}"
    fi
    printf " 近 %2s 分钟:%3s 次 %s\n" "$m" "$n" "$tag"
    done
    fi
    echo "$SEP"

    echo "【最近日志】"
    if [ "$OS" = "OpenWrt" ]; then
    echo "$RAWLOG" | grep -E "komari|agent\[" | tail -5 | sed "s/^/ /" || echo " (无日志)"
    else
    echo "$RAWLOG" | tail -5 | sed "s/^/ /" || echo " (无日志)"
    fi
    echo ""
    echo "================================================================"
    '

    ``**显示效果:**``
    ==================== Komari Agent 连接体检 ====================

    【系统类型】Debian
    ────────────────────────────────────────────────
    【Agent 上报 IP】
    IPv4: 203.0.113.1
    IPv6: 2001:db8::1
    ────────────────────────────────────────────────
    【Agent 进程】
    ✅ 运行中 (PID: 15062)
    完整命令行:
    /opt/komari/agent -e http://10.0.0.100:25778 -t YOUR_TOKEN --disable-web-ssh --disable-auto-update
    ────────────────────────────────────────────────
    【安全与更新】
    🔒 SSH 远程控制: ✅ 已禁用(安全)
    🔒 自动更新: ✅ 已禁用(版本可控)
    📅 流量重置日: 未设置
    ────────────────────────────────────────────────
    【配置的主控地址】
    http://10.0.0.100:25778
    解析:主机=10.0.0.100 端口=25778
    ────────────────────────────────────────────────
    【主控连接】
    ✅ 已连接
    ESTAB 0 0 10.0.0.100:42676 10.0.0.100:25778
    ESTAB 0 0 10.0.0.100:57860 10.0.0.100:25778
    ESTAB 0 0 10.0.0.100:47168 10.0.0.100:25778
    ESTAB 0 0 10.0.0.100:50674 10.0.0.100:25778
    ESTAB 0 0 10.0.0.100:50690 10.0.0.100:25778
    ESTAB 0 0 10.0.0.100:41530 10.0.0.100:25778
    ESTAB 0 0 10.0.0.100:41972 10.0.0.100:25778
    ESTAB 0 0 10.0.0.100:39732 10.0.0.100:25778
    ESTAB 0 0 10.0.0.100:59620 10.0.0.100:25778
    ────────────────────────────────────────────────
    【连接类型】
    ✅ 内网直连模式(推荐,不受公网波动影响)
    ────────────────────────────────────────────────
    【超时/重连统计】
    近 10 分钟: 0 次 ✅ 非常稳定
    近 30 分钟: 0 次 ✅ 非常稳定
    近 60 分钟: 0 次 ✅ 非常稳定
    ────────────────────────────────────────────────
    【最近日志】
    Sep 25 21:17:52 your-host agent[15062]: 2026/09/25 21:17:52 Ping task 13 failed: no packets received
    Sep 25 21:20:14 your-host agent[15062]: 2026/09/25 21:20:14 Get IPV4 Success: 203.0.113.1
    Sep 25 21:20:16 your-host agent[15062]: 2026/09/25 21:20:16 Get IPV6 Success: 2001:db8::1
    Sep 25 21:25:14 your-host agent[15062]: 2026/09/25 21:25:14 Get IPV4 Success: 203.0.113.1
    Sep 25 21:25:17 your-host agent[15062]: 2026/09/25 21:25:17 Get IPV6 Success: 2001:db8::1

    ================================================================

    主楼
  • freenessfish

    这种应该发技术版啊

    #1
  • MJJYYDS

    凑帖子数的,没技术含量,一个查询命令而已😂

    #2

发表回复

登录后回复