/etc/auto-updater.conf:
# 自动更新配置
# 启用安全更新 (yes/no)
ENABLE_SECURITY=yes# 启用常规更新 (yes/no)
ENABLE_REGULAR=no# 执行dist-upgrade (yes/no)
ENABLE_DIST_UPGRADE=no# 安装推荐包 (yes/no)
INSTALL_RECOMMENDS=no# 清理旧包 (yes/no)
AUTO_CLEAN=yes# 邮件通知地址
NOTIFY_EMAIL="admin@example.com"# 日志文件路径
LOG_FILE="/var/log/auto-updater.log"# 最大日志保留天数
LOG_RETENTION_DAYS=30
/usr/local/sbin/auto-updater
#!/bin/bash
# Debian自动安全更新脚本
# 配置文件: /etc/auto-updater.confCONFIG_FILE="/etc/auto-updater.conf"
LOCK_FILE="/var/lock/auto-updater.lock"# 加载配置文件
load_config() {if [ ! -f "$CONFIG_FILE" ]; thenecho "错误: 配置文件 $CONFIG_FILE 不存在" >&2exit 1fisource "$CONFIG_FILE"
}# 初始化环境
initialize() {# 创建锁文件exec 9>"$LOCK_FILE"if ! flock -n 9; thenecho "另一个更新进程正在运行,退出" >&2exit 1fi
}# 执行安全更新
security_update() {echo "$(date) - 开始安全更新检查" | tee -a "$LOG_FILE"# 获取安全更新列表local security_packages=()local pkgfor pkg in $(apt-get -s dist-upgrade | awk '/^Inst.*security/ {print $2}'); dosecurity_packages+=("$pkg")doneif [ ${#security_packages[@]} -gt 0 ]; thenecho "发现安全更新包: ${security_packages[*]}" | tee -a "$LOG_FILE"apt-get install -y "${security_packages[@]}" 2>&1 | tee -a "$LOG_FILE"elseecho "没有可用的安全更新" | tee -a "$LOG_FILE"fi
}# 执行常规更新
regular_update() {echo "$(date) - 开始常规更新" | tee -a "$LOG_FILE"local upgrade_cmd="apt-get upgrade -y"if [ "$INSTALL_RECOMMENDS" = "no" ]; thenupgrade_cmd+=" --no-install-recommends"fiif [ "$ENABLE_DIST_UPGRADE" = "yes" ]; thenupgrade_cmd="apt-get dist-upgrade -y"fieval "$upgrade