[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
posted @ 2025-03-19 14:58  夜歌乘年少  阅读(38)  评论(0)    收藏  举报