diff --git a/core/tg_report.sh b/core/tg_report.sh new file mode 100755 index 0000000..d5466bb --- /dev/null +++ b/core/tg_report.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# ========================================================== +# 脚本名称: tg_report.sh (Telegram 每日战报模块) +# 核心功能: 分析日志并推送 24 小时统计数据到 TG +# ========================================================== + +INSTALL_DIR="/opt/ip_sentinel" +CONFIG_FILE="${INSTALL_DIR}/config.conf" +LOG_FILE="${INSTALL_DIR}/logs/sentinel.log" + +# 1. 加载配置并自检 +if [ ! -f "$CONFIG_FILE" ]; then exit 1; fi +source "$CONFIG_FILE" + +if [ -z "$TG_TOKEN" ] || [ -z "$CHAT_ID" ]; then + echo "⚠️ 未配置 Telegram 机器人参数,取消播报。" + exit 0 +fi + +# 2. 截取过去 24 小时的日志 +LOG_CONTENT=$(find "$LOG_FILE" -mtime -1 -exec cat {} \; 2>/dev/null) + +if [ -z "$LOG_CONTENT" ]; then + MSG="⚠️ **IP-Sentinel 警告**%0A过去 24 小时内没有检测到 [${REGION_NAME}] 节点的运行日志,请检查守护进程!" +else + # 3. 数据精准分析 + TOTAL_SESSIONS=$(echo "$LOG_CONTENT" | grep "\[START\]" -c) + SUCCESS_COUNT=$(echo "$LOG_CONTENT" | grep "✅" -c) + FAILED_COUNT=$(echo "$LOG_CONTENT" | grep "❌" -c) + UNKNOWN_COUNT=$(echo "$LOG_CONTENT" | grep "⚠️" -c) + + LAST_SCORE=$(echo "$LOG_CONTENT" | grep "\[SCORE\]" | tail -n 1 | awk -F'] ' '{print $2}') + + if [ "$TOTAL_SESSIONS" -gt 0 ]; then + RATE=$(awk "BEGIN {printf \"%.1f\", ($SUCCESS_COUNT/$TOTAL_SESSIONS)*100}") + else + RATE=0 + fi + + # 动态国旗 + case "$REGION_CODE" in + "JP") FLAG="🇯🇵" ;; + "US") FLAG="🇺🇸" ;; + "DE") FLAG="🇩🇪" ;; + "SG") FLAG="🇸🇬" ;; + *) FLAG="🌐" ;; + esac + + # 4. 组装 Markdown 消息体 + read -r -d '' MSG < /dev/null + +echo "✅ Telegram 统计数据发送指令已执行!请检查手机。" \ No newline at end of file