User Tools

Site Tools


update

This is an old revision of the document!


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
#
# 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)-$(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 = /bin/rpm, /usr/bin/up2date, \                 ###
###   /usr/bin/yum, /usr/bin/rkhunter, /usr/bin/needs-restarting          ###
###   %wheel ALL = NOPASSWD: SOFTWARE                                     ###
###      -or this, as appropriate-                                        ###
###   Cmnd_Alias SOFTWARE_UPDATE = /usr/local/bin/apt, /usr/bin/apt-get   ###
###   %sudo ALL = NOPASSWD: SOFTWARE_UPDATE                               ###
### This allows all users in the 'wheel' group to update the server.      ###
#############################################################################
 
source /etc/os-release
 
case ${PRETTY_NAME} in
        "NethServer 7.9.2009")
                System="RH"
                ;;
 
        "Linux Mint 21"|"Linux Mint 21.1")
                System="Deb"
                ;;
 
        *)
                System="Unknown"
                echo "This system is unknown, please update this script and add a check"
                echo "for the pattern ${PRETTY_NAME} to ease updating."
                echo "Then update https://wiki.cyli.org/doku.php?id=update"
                exit 127
                ;;
        esac
 
if [[ ${System} == "Deb" ]]; then
        sudo apt update | tee -a ${LogFile}
        sudo apt upgrade -y | tee -a ${LogFile}
        sudo apt 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
        sudo /usr/bin/yum -y update | tee -a ${LogFile}
        # sudo /usr/bin/rkhunter --propupd | tee -a ${LogFile}
        sudo /usr/bin/yum 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.1683667937.txt.gz · Last modified: by steve