update
Update the software with one command
A big addition to this is to add an entry in /etc/sudoers.d/Update that lets the script below run without a password.
- Update
#!/bin/bash # /usr/local/bin/Update # This allows updating software by a single common command on all my machines. Logs=~/.Logs/$(date +"%Y/%m/%d") mkdir -p ${Logs} LogFile=${Logs}/$(hostname -s)-$(date +"%T.txt") ############################################################################# ### SRJ 2015-03-27 This script allows a user to update the local ### ### machine without further credentials, it requires that a file be ### ### created in /etc/sudoers.d/Update with the lines below; ### ### ### ### ## Installation and management of software ### ### Cmnd_Alias SOFTWARE_UPDATE = /bin/rpm, /usr/bin/up2date, \ ### ### /usr/bin/dnf, /usr/bin/rkhunter, /usr/bin/needs-restarting, \ ### ### /usr/bin/etckeeper, /usr/bin/tig ### ### %wheel ALL = NOPASSWD: SOFTWARE_UPDATE ### ### ### ### # -or this, as appropriate- ### ### ### ### Cmnd_Alias SOFTWARE_UPDATE = /usr/local/bin/apt, /usr/bin/apt-get, \ ### ### /usr/bin/tig ### ### %sudo ALL = NOPASSWD: SOFTWARE_UPDATE ### ### ### ### This allows all users in the 'wheel' or 'sudo' group to run updates. ### ############################################################################# source /etc/os-release case ${PRETTY_NAME} in "NethServer 7.9.2009") System="RH" ;; "Linux Mint 21.3"|"Linux Mint 22"|"Linux Mint 22.1") System="Deb" ;; "Debian GNU/Linux 12 (bookworm)") System="Deb" ;; "Rocky Linux 8.10 (Green Obsidian)"|"Rocky Linux 9.4 (Blue Onyx)") System="NewRH" ;; *) System="Unknown" echo "This system is unknown, please update this script and add a check" echo "for the pattern;" echo "${PRETTY_NAME}" echo "Then update https://wiki.cyli.org/doku.php?id=update" exit 127 ;; esac if [[ ${System} == "Deb" ]]; then echo "Updating ${PRETTY_NAME}" | tee -a ${LogFile} sudo apt-get update | tee -a ${LogFile} sudo apt-get upgrade -y | tee -a ${LogFile} sudo apt-get autoremove -y | tee -a ${LogFile} if [ -f /var/run/reboot-required ] ; then echo 'This system needs to be rebooted!' | tee -a ${LogFile} else echo "This system doesn't need rebooting." | tee -a ${LogFile} fi elif [[ ${System} == "RH" ]]; then echo "Updating ${PRETTY_NAME}" | tee -a ${LogFile} sudo /usr/bin/yum -y update | tee -a ${LogFile} sudo /usr/bin/yum -y autoremove | tee -a ${LogFile} Something='' Something=$(sudo /usr/bin/needs-restarting) if [[ ! -z $Something ]]; then echo 'This machine needs to be restarted!' | tee -a ${LogFile} else echo 'No restart is required.' | tee -a ${LogFile} fi elif [[ ${System} == "NewRH" ]]; then echo "Updating ${PRETTY_NAME}" | tee -a ${LogFile} sudo /usr/bin/dnf -y update | tee -a ${LogFile} sudo /usr/bin/dnf -y autoremove | tee -a ${LogFile} Something='' Something=$(sudo /usr/bin/needs-restarting) if [[ ! -z $Something ]]; then echo 'This machine needs to be restarted!' | tee -a ${LogFile} else echo 'No restart is required.' | tee -a ${LogFile} fi fi
update.txt · Last modified: by steve
