[Debian]支持配置更新类型的自动更新脚本
/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.conf
CONFIG_FILE="/etc/auto-updater.conf"
LOCK_FILE="/var/lock/auto-updater.lock"
# 加载配置文件
load_config() {
if [ ! -f "$CONFIG_FILE" ]; then
echo "错误: 配置文件 $CONFIG_FILE 不存在" >&2
exit 1
fi
source "$CONFIG_FILE"
}
# 初始化环境
initialize() {
# 创建锁文件
exec 9>"$LOCK_FILE"
if ! flock -n 9; then
echo "另一个更新进程正在运行,退出" >&2
exit 1
fi
}
# 执行安全更新
security_update() {
echo "$(date) - 开始安全更新检查" | tee -a "$LOG_FILE"
# 获取安全更新列表
local security_packages=()
local pkg
for pkg in $(apt-get -s dist-upgrade | awk '/^Inst.*security/ {print $2}'); do
security_packages+=("$pkg")
done
if [ ${#security_packages[@]} -gt 0 ]; then
echo "发现安全更新包: ${security_packages[*]}" | tee -a "$LOG_FILE"
apt-get install -y "${security_packages[@]}" 2>&1 | tee -a "$LOG_FILE"
else
echo "没有可用的安全更新" | tee -a "$LOG_FILE"
fi
}
# 执行常规更新
regular_update() {
echo "$(date) - 开始常规更新" | tee -a "$LOG_FILE"
local upgrade_cmd="apt-get upgrade -y"
if [ "$INSTALL_RECOMMENDS" = "no" ]; then
upgrade_cmd+=" --no-install-recommends"
fi
if [ "$ENABLE_DIST_UPGRADE" = "yes" ]; then
upgrade_cmd="apt-get dist-upgrade -y"
fi
eval "$upgrade

浙公网安备 33010602011771号