#!/bin/bash
set -euo pipefail # 严格模式:错误退出、未定义变量报错、管道错误捕获
# 配置参数
LOG_FILE="/var/log/subscriber_ids_update.log"
SOURCE_URL="https://database.radioid.net/static/users.json"
DEST_FILE="/opt/subscriber_ids.json"
# 记录日志函数(简化重复代码)
log() {
echo "[$(date +"%Y-%m-%d %H:%M:%S")] $1" >> "$LOG_FILE"
}
# 主流程
log "开始更新subscriber_ids文件..."
# 步骤1:下载文件
log "尝试下载文件:$SOURCE_URL"
if ! wget -q -O "$DEST_FILE" "$SOURCE_URL"; then
log "错误:下载失败!请检查网络或URL是否有效。"
exit 1
fi
# 验证文件有效性
if [ ! -s "$DEST_FILE" ]; then
log "错误:下载的文件为空或不存在!"
exit 1
fi
log "文件下载成功,保存至:$DEST_FILE"
# 步骤2:复制到HBlink3并重启服务
log "复制文件到HBlink3目录:/opt/HBlink3/"
if ! cp "$DEST_FILE" "/opt/HBlink3/"; then
log "错误:复制到HBlink3失败!请检查目录权限。"
exit 1
fi
log "重启hblink.service..."
if ! systemctl restart hblink.service; then
log "错误:hblink.service重启失败!"
exit 1
fi
# 等待服务稳定(根据实际需求调整等待时间)
log "等待15秒让hblink.service稳定..."
sleep 15
# 步骤3:复制到HBmonitor2并重启服务
log "复制文件到HBmonitor2目录:/opt/HBmonitor2/"
if ! cp "$DEST_FILE" "/opt/HBmonitor2/"; then
log "错误:复制到HBmonitor2失败!请检查目录权限。"
exit 1
fi
log "重启hbmon.service..."
if ! systemctl restart hbmon.service; then
log "错误:hbmon.service重启失败!"
exit 1
fi
# 可选:清理临时文件(根据需求启用)
# log "清理临时文件..."
# rm "$DEST_FILE"
log "操作完成:文件更新成功,服务已重启。"可以配置自动任务
赋予脚本执行权限:
bash复制chmod +x /path/to/update_subscriber_ids.sh
设置 cron 定时任务
编辑当前用户的 crontab 文件:
bash复制crontab -e
添加以下行,表示每天凌晨 3 点执行脚本:
bash复制0 3 * * * /path/to/update_subscriber_ids.sh
时间格式说明:
0 3 * * *:每天 3:00 AM 执行。
若需调整频率,可修改为
*/5 * * * *(每 5 分钟)或0 */6 * * *(每 6 小时)等。
验证与调试
手动测试脚本:
bash复制/path/to/update_subscriber_ids.sh
检查目标文件和日志是否生成。
查看任务列表:
bash复制crontab -l
检查日志:
bash复制tail -f /var/log/subscriber_ids_update.log