- #!/bin/sh
- # Update Various System Files, Ports, etc.
- # Copyright (c) 2006-2016, TundraWare Inc, Des Plaines, IL USA
- # All Rights Reserved
- # $Id$
- #####
- # Where To Put The Various Log Files Generated Here
- #####
- LOGDIR=/var/log
- #####
- # Some Program Locations Vary By OS
- ###
- ECHO=$(which echo)
- #####
- # List Of Sets To Process By Default
- #####
- #ALL='debian freebsd_doc freebsd_ports freebsd_src freebsd_sys macports redhat texlive'
- # !!!
- # !!! Edit this or the program will do nothing without CLI args
- # !!!
- DEFAULTSETS=${SYSUPD:-""} # Allow setting this from the environment
- # ---------------- Support Functions ---------------- #
- #####
- # Enter Timestamp Into Current Log
- # Args:
- # $1 Name of logfile
- #####
- timestamp()
- {
- ${ECHO} "" >> $1
- ${ECHO} "#####" >> $1
- ${ECHO} -n "# " >> $1
- date >>$1
- ${ECHO} "#####" >> $1
- ${ECHO} "" >> $1
- }
- # End Of 'timestamp()'
- #####
- # Execute The Desired Update
- # Args:
- # $1 Update Name
- # $2 Log Directory
- # $3 Command String To Execute
- #####
- runupd()
- {
- log=$2/sysupd-$1.log
- timestamp $log
- touch $2/.sysupd-$1-begin && eval $3 >>$log 2>&1 && touch $2/.sysupd-$1-end &
- }
- # End of 'runupd()'
- # -------------------- Program Entry Point ---------------#
- #####
- # Command line args override default set
- #####
- if [ "$*"_ = _ ]
- then
- SETS=$DEFAULTSETS
- else
- SETS=$*
- fi
- #####
- # Process The Requested Updates
- #####
- for SET in $SETS
- do
- case $SET
- in
- ###
- # Debian Linux Updates
- ###
- debian)
- runupd $SET $LOGDIR "/usr/bin/apt-get -y update && /usr/bin/apt-get -y dist-upgrade && /usr/bin/apt-get -y upgrade"
- ;;
- ###
- # FreeBSD Documentation Updates
- ###
- freebsd_doc)
- runupd $SET $LOGDIR "/usr/local/bin/svn update /usr/doc"
- ;;
- ###
- # Freebsd Ports Updates
- ###
- freebsd_ports)
- runupd $SET $LOGDIR "/usr/sbin/portsnap cron update"
- ;;
- ###
- # FreeBSD Source Code Updates
- ###
- freebsd_src)
- runupd $SET $LOGDIR "/usr/local/bin/svn update /usr/src"
- ;;
- ###
- # FreeBSD Rebuild OS & Kernels
- ###
- freebsd_sys)
- rm -f $LOGDIR/sysupd-${SET}.log # Only keep latest run log
- cd /usr/src
- runupd $SET $LOGDIR "make -j4 clean buildworld buildkernel"
- ;;
- ###
- # MacPorts
- ###
- macports)
- runupd $SET $LOGDIR "/opt/local/bin/port selfupdate && /opt/local/bin/port upgrade outdated"
- ;;
- ###
- # RedHat YUM Updates
- ###
- redhat)
- runupd $SET $LOGDIR "/usr/bin/yum -y clean all && /usr/bin/yum -y upgrade"
- ;;
- ###
- # TeX Live Updates
- ###
- texlive)
- runupd $SET $LOGDIR "/usr/local/bin/tlmgr update --self && /usr/local/bin/tlmgr update --all"
- ;;
- #####
- # Catch Errors
- #####
- *)
- ${ECHO} "Invalid sysupd Option Specified!"
- ;;
- esac
- done