You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中每10分钟对比ID值并触发Telegram通知

解决方案:添加ID定时对比与Telegram通知功能

以下是整合需求后的完整Bash脚本,实现了每10分钟检查ID是否更新,未更新则发送Telegram通知的功能:

#!/bin/bash
# 配置Telegram机器人参数
TELEGRAM_BOT_TOKEN="你的机器人Token"
TELEGRAM_CHAT_ID="你的目标聊天ID"

# 发送Telegram消息的函数
send_telegram() {
    curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d chat_id="$TELEGRAM_CHAT_ID" -d text="$1"
}

# 替换为你的实际API地址
HOST="https://your-api-endpoint.com"

# 首次获取初始ID,作为历史对比值
last_id=$(curl -X GET "$HOST" | jq '.res[0].id | tonumber')
echo "初始ID: $last_id"

# 记录上次执行检查的时间戳(秒)
last_check_timestamp=$(date +%s)

# 启动循环
for ((current_loop_id=$last_id; current_loop_id<=999999999; current_loop_id++))
do
    sleep 10
    echo "Start $current_loop_id:"

    # 计算当前时间与上次检查的时间差
    current_timestamp=$(date +%s)
    time_elapsed=$((current_timestamp - last_check_timestamp))

    # 每10分钟(600秒)执行一次ID更新检查
    if [ $time_elapsed -ge 600 ]; then
        # 获取当前最新的ID
        latest_id=$(curl -X GET "$HOST" | jq '.res[0].id | tonumber')
        echo "检查ID:当前最新值=$latest_id,历史值=$last_id"

        # 对比ID是否未更新
        if [ $latest_id -eq $last_id ]; then
            # 发送告警通知
            send_telegram "⚠️ ID已10分钟未更新!当前ID:$latest_id"
            echo "已发送Telegram告警"
        else
            # 更新历史ID为最新值
            last_id=$latest_id
            echo "ID已更新,更新后的值:$last_id"
        fi

        # 重置检查时间戳为当前时间
        last_check_timestamp=$current_timestamp
    fi
done

关键逻辑说明:

  • 参数配置:先填写Telegram的机器人Token和聊天ID,确保通知能正常发送;同时替换HOST为你的实际API地址。
  • 初始值初始化:脚本启动时先获取一次ID作为历史对比基准,同时记录当前时间戳用于后续间隔计算。
  • 定时检查:通过时间戳计算间隔,每累计满10分钟就触发一次ID检查,不影响原脚本的10秒循环逻辑。
  • ID对比与通知:检查时重新拉取最新ID,和历史值对比,若相等则调用send_telegram发送告警;若更新则同步历史值。
  • 脚本规范:使用$()替代反引号执行命令,变量引用添加双引号避免空格问题,数值比较用-eq保证正确性。

内容的提问来源于stack exchange,提问作者Yuliya M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:02:41