From 9aef79831cb888b2b9d30fdc6d9408104019638c Mon Sep 17 00:00:00 2001 From: hotyue <52734432+hotyue@users.noreply.github.com> Date: Wed, 15 Apr 2026 03:57:02 +0000 Subject: [PATCH] =?UTF-8?q?refactor(daemon):=20=E5=8A=A8=E6=80=81=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E8=8A=82=E7=82=B9=E9=98=B2=E6=92=9E=E8=BA=AB=E4=BB=BD?= =?UTF-8?q?=E4=B8=8E=E8=BF=90=E8=A1=8C=E6=97=B6=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=E8=87=B3=20UA=20=E8=AF=B7=E6=B1=82=E5=A4=B4=E5=8F=8A=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E6=92=AD=E6=8A=A5=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/agent_daemon.sh | 5 +++-- core/tg_daemon.sh | 15 ++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core/agent_daemon.sh b/core/agent_daemon.sh index 35693f0..f1defcd 100755 --- a/core/agent_daemon.sh +++ b/core/agent_daemon.sh @@ -1,7 +1,7 @@ #!/bin/bash # ========================================================== -# 脚本名称: agent_daemon.sh (受控节点 Webhook 守护进程 v3.4.0 版本锚点版) +# 脚本名称: agent_daemon.sh (受控节点 Webhook 守护进程 - 动态锚点版) # 核心功能: 智能防打扰注册、进程自检、模块级路由分发(403拦截) # ========================================================== @@ -223,7 +223,8 @@ class AgentHandler(http.server.BaseHTTPRequestHandler): req = urllib.request.Request( config.get('TG_API_URL', ''), data=data, - headers={'User-Agent': 'IP-Sentinel-Agent/3.0.4'} + # [动态化] 彻底消灭硬编码,使用运行态版本号 + headers={'User-Agent': f'IP-Sentinel-Agent/{local_ver}'} ) urllib.request.urlopen(req, timeout=10) diff --git a/core/tg_daemon.sh b/core/tg_daemon.sh index 3d17cbb..8512a40 100755 --- a/core/tg_daemon.sh +++ b/core/tg_daemon.sh @@ -1,8 +1,8 @@ #!/bin/bash # ========================================================== -# 脚本名称: tg_daemon.sh (Telegram 互动监听守护进程) -# 核心功能: 极低功耗长轮询监听 TG 指令,实现远程控制 +# 脚本名称: tg_daemon.sh (Telegram 互动监听守护进程 - 动态锚点版) +# 核心功能: 极低功耗长轮询监听、节点溯源、版本继承 # ========================================================== INSTALL_DIR="/opt/ip_sentinel" @@ -16,6 +16,11 @@ source "$CONFIG_FILE" # 如果没有配置 TG 机器人,则安静退出守护进程 [ -z "$TG_TOKEN" ] || [ -z "$CHAT_ID" ] && exit 0 +# [核心: 动态版本锚点与防撞甲身份载入] +LOCAL_VER="${AGENT_VERSION:-未知}" +IP_HASH=$(echo "${PUBLIC_IP:-127.0.0.1}" | md5sum | cut -c 1-4 | tr 'a-z' 'A-Z') +NODE_NAME="$(hostname | cut -c 1-10)-${IP_HASH}" + # 2. 初始化消息偏移量 (Offset) 记录文件,防止重启后重复处理老消息 OFFSET=0 [ -f "$OFFSET_FILE" ] && OFFSET=$(cat "$OFFSET_FILE") @@ -44,20 +49,20 @@ while true; do if [ "$MSG_CHAT_ID" == "$CHAT_ID" ]; then case "$MSG_TEXT" in "/run") - send_msg "🚀 **[指令下达]** 正在后台立即触发 IP 养护任务..." + send_msg "🚀 **[${NODE_NAME}]** 正在后台触发 IP 养护任务 (v${LOCAL_VER})..." # 使用 nohup 另起后台独立进程运行,防止阻塞当前监听器的循环 nohup bash "${INSTALL_DIR}/core/mod_google.sh" >/dev/null 2>&1 & ;; "/log") LOG_DATA=$(tail -n 15 "${INSTALL_DIR}/logs/sentinel.log") - send_msg "📄 **[最近 15 行系统日志]**%0A\`\`\`log%0A${LOG_DATA}%0A\`\`\`" + send_msg "📄 **[${NODE_NAME}] 实时日志 (v${LOCAL_VER}):**%0A\`\`\`log%0A${LOG_DATA}%0A\`\`\`" ;; "/report") # 触发生成一次战报 bash "${INSTALL_DIR}/core/tg_report.sh" ;; "/help"|"/start") - HELP_MSG="🛡️ **IP-Sentinel 控制台**%0A/run - 立刻执行一次养护%0A/log - 抓取最新运行日志%0A/report - 手动生成统计简报" + HELP_MSG="🛡️ **IP-Sentinel 边缘控制台**%0A📍 节点: \`${NODE_NAME}\`%0A🔖 版本: \`v${LOCAL_VER}\`%0A%0A/run - 立刻执行一次养护%0A/log - 抓取最新运行日志%0A/report - 手动生成统计简报" send_msg "$HELP_MSG" ;; esac