wiki:AptitudeUpdateScript

Version 1 (modified by chris, 4 years ago) (diff)

Page created

These scripts were written to enable the quick and easy updating of packages and the Changelog.

The following two scripts, a-up and logchanges, they are installed on PenguinServer and can be 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.

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