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