Debian Aptitude Upgrade Scripts
These scripts were written to enable the quick and easy updating of Debian packages and the recording of the updates in the /root/Changelog, see ticket:470#comment:6.
The following two scripts, a-up and logchanges, are installed in /usr/local/bin on PuffinServer, PenguinServer and ParrotServer and are used to do system updates and record the updates in /root/Changelog. The contents of the Changelog is then emailed to root by metche so that the people working on the server know what updates have been applied.
Notification of available Debian updates are sent by email every 5 mins after they become available via Munin on PenguinServer, see the apt_all graphs:
- https://penguin.transitionnetwork.org/munin/transitionnetwork.org/puffin.transitionnetwork.org/apt_all.html
- https://penguin.transitionnetwork.org/munin/transitionnetwork.org/penguin.transitionnetwork.org/apt_all.html
- https://penguin.transitionnetwork.org/munin/transitionnetwork.org/parrot.transitionnetwork.org/apt_all.html
Updating servers is simply a matter of:
sudo -i a-up
a-up
#!/bin/bash # This script runs "aptitude full-upgrade" and updates the Changelog # location of the logchange script LOGCHANGE="/usr/local/bin/logchange" # check that the logchange script is installed if [[ ! -f $LOGCHANGE ]] ; then echo "You need to install the $LOGCHANGE script before you can run $0" exit fi # check that apt-show-versions in installed and if it isn't then install it if [[ ! -f "/usr/bin/apt-show-versions" ]] ; then echo "Installing apt-show-versions, please wait a while after it's installed" logchange "apt-show-versions : installed" aptitude install apt-show-versions exit fi # get updates apt-get -qq update # get a list of updates UPDATES=$(apt-show-versions -b -u | xargs) # if we have updates then install them and write the list of updates to the # Changelog if [[ $UPDATES ]]; then echo "About to upgrade $UPDATES" logchange "$UPDATES : updated" aptitude full-upgrade exit else echo "No updates today" exit fi
logchange
#!/bin/bash # This is a script to update the Changelog # File name of the Changelog CHANGELOG_NAME="Changelog" DATESTAMP=$(date +%Y-%m-%d) TIMESTAMP=$(date +%Y-%m-%d-%H-%M-%S) # check that $HOME is set if [[ $HOME ]]; then CHANGELOG_DIR=$HOME CHANGELOG=$CHANGELOG_DIR/$CHANGELOG_NAME BACKUP_DIR=$CHANGELOG_DIR/.$CHANGELOG_NAME CHANGELOG_BACKUP=$BACKUP_DIR/$CHANGELOG_NAME.$TIMESTAMP else echo "You are homeless?" exit fi # get a username and if we can't use root if [[ $SUDO_USER ]]; then CHANGELOG_EDITOR=$SUDO_USER elif [[ $USER ]]; then CHANGELOG_EDITOR=$USER else CHANGELOG_EDITOR=root fi # check for some changes on standard input if [[ $1 ]]; then CHANGES=$1 elif [[ ! $1 ]]; then echo "Type the changes you would like recorded then [ENTER]:" read changes CHANGES=$changes fi # create the backup directory if it doesn't exist if [[ ! -d "${BACKUP_DIR}" ]] ; then mkdir $BACKUP_DIR fi # backup the CHANGELOG if it exists if [[ -f "${CHANGELOG}" ]] ; then cp -a $CHANGELOG $CHANGELOG_BACKUP fi # write the date and user to the CHANGELOG echo -e "$DATESTAMP\t$CHANGELOG_EDITOR" > $CHANGELOG # write what we have done, taken from standard in echo -e "\t*\t$CHANGES" >> $CHANGELOG # write a blank line echo >> $CHANGELOG # write the backup back to the $CHANGELOG if [[ -f "${CHANGELOG_BACKUP}" ]] ; then cat $CHANGELOG_BACKUP >> $CHANGELOG fi