2015-11-23 23:00:09 +10:00
#!/bin/bash
2016-06-07 20:42:19 +10:00
# Script Name: check_updates_rpm
# Author Name: Matt McKinnon
# Date: 7th June 2016
2015-11-23 23:00:09 +10:00
# Description: For use on rpm based distros ie CentOS, Red Hat, Fedora
# This script will:
# Clean up the local rpm repository of retrieved packages (yum clean)
# Resync the package index (yum makecache)
# If called with AUTOUPDATE set to yes then SECURITY updates will be downloaded and applied. (The package yum-plugin-security is required Install using
# yum install yum-plugin-security)
2016-06-07 20:42:19 +10:00
2015-11-23 23:00:09 +10:00
#
# Make user configuration changes in this section
#
2016-06-07 20:42:19 +10:00
MAILTO = "support@comprofix.com"
2015-11-23 23:00:09 +10:00
AUTOUPDATE = "no"
LOGFILE = "/var/log/server_maint.log"
2016-06-07 20:42:19 +10:00
THISSERVER = $( hostname -f)
2015-11-23 23:00:09 +10:00
#
# End of user configuration section
#
DASHES = "---------------------------------------------------------------------------------"
DASHES2 = "================================================================================="
# Check if the script is being run as root exit if it is not.
if [ $( id -u) -ne 0 ]
then
echo "ur not root bro"
exit 1
fi
startlogging( ) {
echo $DASHES2 >> $LOGFILE
echo " $0 started running at `date` " >> $LOGFILE
echo $DASHES2 >> $LOGFILE
}
stoplogging( ) {
echo " `date` [MESSAGE] $0 finished runnning " >> $LOGFILE
echo $DASHES >> $LOGFILE
}
check_return( ) {
if [ " $? " -ne "0" ]
then
2016-06-07 20:42:19 +10:00
echo " $( date) [ERROR] $1 failed to run " >> $LOGFILE
2015-11-23 23:00:09 +10:00
send_error_email $1
stoplogging
exit 1
fi
2016-06-07 20:42:19 +10:00
echo " $( date) [SUCCESS] $1 ran without error " >> $LOGFILE
2015-11-23 23:00:09 +10:00
}
send_error_email( ) {
echo " Hello,
Whilst running the update script ( $0 ) on $THISSERVER there was a problem.
[ ERROR] " $1 " failed to run
The server has the following network interfaces configured ${ SERVERADDS [@] } .
Please log in via ssh ( e.g. ssh root@${ IPADDR [0] } ) and check the log file:
vim $LOGFILE
Regards." | /bin/mail -s " [ $THISSERVER ] There was an error whilst running $0 " $MAILTO
}
# IP Address stuff
declare -a IPADDR
declare -a NICINTERFACE
declare -a SERVERADDS
index = 0
for i in $( ifconfig | grep 'inet addr' | awk '{print $2}' | sed 's#addr:##g' ) ;
do
IPADDR[ $index ] = $i
let "index += 1"
done
index = 0
for i in $( ifconfig | grep 'eth' | awk '{print $1}' ) ;
do
SERVERADDS[ $index ] = " $i ${ IPADDR [ $index ] } "
let "index += 1"
done
# End IP Address stuff
startlogging
yum clean all > /dev/null
check_return "yum clean all"
yum makecache > /dev/null
check_return "yum makecache"
if [ [ " $AUTOUPDATE " = = "yes" ] ]
then
yum -y update --security > /dev/null
check_return "yum -y update --security"
else
PACKAGES_TO_BE_UPGRADED = ` yum list updates -q`
check_return "yum list updates -q"
fi
if [ [ -z $PACKAGES_TO_BE_UPGRADED ] ]
then
2016-06-07 20:42:19 +10:00
echo " $( date) [MESSAGE] No packages need updating. " >> $LOGFILE
2015-11-23 23:00:09 +10:00
else
echo "
Hello,
Packages requiring updates onto $THISSERVER .
$PACKAGES_TO_BE_UPGRADED
The server has the following network interfaces configured ${ SERVERADDS [@] } .
To update the server log in via ssh ( e.g. ssh root@${ IPADDR [0] } ) and run the following command:
yum upgrade
See the logfile for more info: vim $LOGFILE
Regards. " | /bin/mail -s " [ $THISSERVER ] server may need some updates applied" $MAILTO
echo " `date` [MESSAGE] Packages need updating email sent to $MAILTO " >> $LOGFILE
fi
stoplogging
exit 0