刚刚把内网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://"; 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 凑帖子数的,没技术含量,一个查询命令而已😂