- Posted on
Automating system updates using Bash scripts and RHEL's yum
or dnf
package manager ensures your Red Hat Enterprise Linux (RHEL)-based systems remain secure and up-to-date. Below is a guide tailored for RHEL environments.
Steps for Automating System Updates
- Create a Bash Script for Updates
The script will:
- Update the package repository.
- Upgrade installed packages.
- Remove unused packages (optional).
- Log the results for review.
Example Script:
#!/bin/bash
# Variables
LOG_FILE="/var/log/system_update.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
# Update and upgrade
echo "[$DATE] Starting system update..." | tee -a $LOG_FILE
# Update package list and upgrade packages
if sudo dnf update -y; then
echo "[$DATE] System update successful." | tee -a $LOG_FILE
else
echo "[$DATE] System update failed." | tee -a $LOG_FILE
exit 1
fi
# Clean up unused packages
if sudo dnf autoremove -y && sudo dnf clean all; then
echo "[$DATE] Cleanup successful." | tee -a $LOG_FILE
else
echo "[$DATE] Cleanup failed." | tee -a $LOG_FILE
fi
echo "[$DATE] Update process completed." | tee -a $LOG_FILE
exit 0
Replace dnf
with yum
if using an older RHEL version.
- Make the Script Executable
Save the script as
update_system.sh
and make it executable.
chmod +x update_system.sh
- Test the Script Run the script manually to confirm it works.
./update_system.sh
- Schedule the Script Using
cron
Automate execution by scheduling the script withcron
.
- Open the
crontab
editor:
crontab -e
Add a line to schedule the script. For example:
- Run daily at 2:00 AM:
0 2 * * * /path/to/update_system.sh
- Run weekly at 3:00 AM on Sundays:
0 3 * * 0 /path/to/update_system.sh
Save and exit.
- Verify the Cron Job Check the scheduled cron job.
crontab -l
- Monitor Logs
Review logs for successful updates or troubleshoot errors. The script logs updates to
/var/log/system_update.log
.
Advanced Automation Enhancements
- Email Notifications Configure the script to send email alerts upon success or failure.
Example (Add to Script):
if sudo dnf update -y; then
echo "System update completed successfully." | mail -s "System Update Success" admin@example.com
else
echo "System update failed!" | mail -s "System Update Failure" admin@example.com
fi
- Exclude Certain Packages Avoid updating specific packages by marking them as held.
sudo dnf mark exclude <package-name>
- Automate Kernel Updates Separately Automate kernel updates only when needed to avoid unnecessary reboots.
By combining Bash scripting with RHEL-specific tools like dnf-automatic
, you can fully automate system updates, enhance security, and reduce administrative overhead.