Загрузка данных


sudo bash <<'BASH'
set -Eeuo pipefail

export DEBIAN_FRONTEND=noninteractive
export NEEDRESTART_MODE=l
export APT_LISTCHANGES_FRONTEND=none

NEW_HOSTNAME="RUMOW11AI02V"
STAMP=$(date -u +%Y%m%d_%H%M%S)
BACKUP="/root/maintenance-${NEW_HOSTNAME}-${STAMP}"
LOG="/var/log/maintenance-${NEW_HOSTNAME}-${STAMP}.log"

mkdir -p "$BACKUP"
exec > >(tee -a "$LOG") 2>&1

trap 'echo "ERROR: line $LINENO. Log: $LOG"' ERR

echo "========== 1. CHECK OS =========="

. /etc/os-release

if [[ "$ID" != "ubuntu" || "$VERSION_ID" != "24.04" ]]; then
    echo "ERROR: Unsupported OS"
    exit 1
fi

hostnamectl
df -h /

echo "========== 2. BACKUP =========="

cp -a /etc/hostname /etc/hosts "$BACKUP/"

if [[ -d /etc/cloud ]]; then
    cp -a /etc/cloud/cloud.cfg "$BACKUP/" 2>/dev/null || true
fi

echo "Backup: $BACKUP"

echo "========== 3. CLOUD-INIT =========="

if command -v cloud-init >/dev/null 2>&1; then

    CLOUD_CFG="/etc/cloud/cloud.cfg.d/99-custom-hostname.cfg"

    if [[ -e "$CLOUD_CFG" ]]; then
        cp -a "$CLOUD_CFG" "$BACKUP/"
    fi

    mkdir -p /etc/cloud/cloud.cfg.d

    cat > "$CLOUD_CFG" <<EOF
#cloud-config
preserve_hostname: true
manage_etc_hosts: false
EOF

fi

echo "========== 4. CHANGE HOSTNAME =========="

hostnamectl set-hostname "$NEW_HOSTNAME"

sed -i -E \
'/^[[:space:]]*127\.0\.1\.1([[:space:]]|$)/d' \
/etc/hosts

printf '\n127.0.1.1\t%s\n' "$NEW_HOSTNAME" >> /etc/hosts

echo "========== 5. CHECK HOSTNAME =========="

hostnamectl
getent hosts "$NEW_HOSTNAME"

if [[ "$(hostname)" != "$NEW_HOSTNAME" ]]; then
    echo "ERROR: Hostname verification failed"
    exit 1
fi

echo "========== 6. UPDATE REPOSITORIES =========="

apt-get \
    -o DPkg::Lock::Timeout=300 \
    -o Acquire::Retries=3 \
    -o Acquire::http::Timeout=30 \
    -o Acquire::https::Timeout=30 \
    -o APT::Update::Error-Mode=any \
    update

echo "========== 7. SIMULATE UPGRADE =========="

apt-get --no-remove -s full-upgrade | tee "$BACKUP/upgrade-plan.txt"

echo "========== 8. INSTALL UPDATES =========="

apt-get \
    -o DPkg::Lock::Timeout=300 \
    -o Dpkg::Options::="--force-confdef" \
    -o Dpkg::Options::="--force-confold" \
    --no-remove \
    -y full-upgrade

echo "========== 9. PACKAGE CHECK =========="

dpkg --audit

echo "========== 10. FINAL CHECK =========="

hostnamectl
uname -r
timedatectl
systemctl is-active ssh
df -h /

echo "========== 11. SCHEDULE REBOOT =========="

echo "Hostname changed: $NEW_HOSTNAME"
echo "OS updates installed"
echo "NTP: REQUIRES SEPARATE CONFIGURATION"
echo "Backup: $BACKUP"
echo "Log: $LOG"

shutdown -r +1 "OS maintenance completed"

echo "REBOOT SCHEDULED IN 1 MINUTE"

BASH