宝塔面板通过【计划任务】实现监听远程链接内容变化并自动触发下载

宝塔面板本身‌不支持‌“监听远程链接内容变化并自动触发下载”的原生功能,需通过‌计划任务 + Shell 脚本‌实现定时轮询检测与自动下载。

核心逻辑是:定期比对本地文件与远程文件的 MD5/SHA256,若不一致则执行 wget/curl 覆盖下载。

实现步骤

登录宝塔面板,进入左侧菜单 ‌【计划任务】‌,然后点击 ‌【添加任务】‌,设置如下:

‌●任务类型:Shell 脚本
‌●任务名称:自动更新 rdpwrap.ini
‌●执行周期:建议每 6 小时 或 每天
‌●脚本内容(按你服务器实际路径修改 LOCAL_FILE)

#!/bin/bash
# ====== 配置区 ======
URL="https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini"
LOCAL_FILE="/www/backup/rdpwrap/rdpwrap.ini"        # ← 改成你要存放的路径
TMP_FILE="/tmp/rdpwrap_ini_$$.tmp"
HASH_FILE="/tmp/rdpwrap_ini_last.md5"
# ===================

mkdir -p "$(dirname "$LOCAL_FILE")"

# 下载远程文件到临时位置
curl -sL --connect-timeout 10 "$URL" -o "$TMP_FILE"

# 如果下载失败则退出
if [ ! -s "$TMP_FILE" ]; then
    rm -f "$TMP_FILE"
    exit 1
fi

# 计算远程文件 hash
NEW_HASH=$(md5sum "$TMP_FILE" | awk '{print $1}')

# 读取上次记录的 hash
OLD_HASH=""
[ -f "$HASH_FILE" ] && OLD_HASH=$(cat "$HASH_FILE")

# 对比并决定是否替换
if [ "$NEW_HASH" != "$OLD_HASH" ]; then
    cp "$TMP_FILE" "$LOCAL_FILE"
    echo "$NEW_HASH" > "$HASH_FILE"
    echo "[$(date '+%F %T')] rdpwrap.ini 已更新 (hash:$NEW_HASH)"
else
    echo "[$(date '+%F %T')] 无变化,跳过下载"
fi

rm -f "$TMP_FILE"
图片[1]-宝塔面板通过【计划任务】实现监听远程链接内容变化并自动触发下载-十一张
图片[2]-宝塔面板通过【计划任务】实现监听远程链接内容变化并自动触发下载-十一张
图片[3]-宝塔面板通过【计划任务】实现监听远程链接内容变化并自动触发下载-十一张

PS:GitHub Raw 文件的 Last-Modified 头不稳定,wget -N容易误判,用内容 Hash 对比是最准的做法。

此方案利用 Linux 定时任务机制,是宝塔环境下最稳定、低成本的自动化同步方式 。‌‌

注意事项

‌1、权限问题‌:确保脚本写入的本地目录对 www 用户有写权限,否则下载会失败。
2、首次运行脚本前,先手动 touch /www/backup/rdpwrap/rdpwrap.ini 或让脚本自动建目录即可。
3、计划任务执行日志可在宝塔「计划任务」→ 对应任务右侧「日志」查看。
4、网络依赖‌:服务器需能访问该外部链接,若在内网需配置代理或白名单。
5、高频限制‌:避免设置过短的执行周期(如秒级),防止被源站封禁 IP。

© 版权声明
THE END
如果觉得这篇文章对您有帮助,可以收藏本网址,方便下次访问!
点赞19 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容