CheckUpdatesRedHat4
Chequeo automático de actualizaciones pendientes en Red Hat 4
Al tener que administrar varios servidores linux Red Hat, me pareció interesante disponer de un sistema que me avisará mediante correo electrónico de las actualizaciones pendientes de instalar en los diferentes servidores para que no haya ninguno que se quede demasiado desactualizado.
En Red Hat 5 esto se puede hacer mediante el servicio yum-updatesd que viene incluido, pero para Red Hat 4 no he encontrada algo parecido. Por eso me he creado un script personalizado para hacer este trabajo. Este script además de avisar por e-mail, también descarga los paquetes para que la próxima vez que se haga la actualización esta sea más rápida. El script en cuestión es el siguiente:
#!/bin/bash
AVISADOS="root@midominio.es"
HOSTNAME=`hostname`
TMPDIR=/tmp
# Esperamos un tiempo aleatorio para que todos los servidores
# no ataquen a la RHN a la vez
sleep `expr $RANDOM % 300`
TMPFILE=`mktemp -p $TMPDIR checkup2date.XXXXXX`
TMPFILE2=`mktemp -p $TMPDIR checkup2date.XXXXXX`
# Obtenemos la lista de paquetes pendientes
/usr/bin/up2date -l > $TMPFILE
# Descargamos los paquetes para facilitar la instalacion posterior
/usr/bin/up2date -u -d -f > /dev/null 2>&1
# Procesamos la lista de pendientes
ESTADO=0
CONT=0
while read linea
do
if [[ `echo $linea | grep "^Name"` ]]
then
ESTADO=1
elif [[ `echo $linea | grep "^--*$"` ]]
then
continue
elif [[ $ESTADO -eq 1 && -z $linea ]]
then
ESTADO=0
elif [[ $ESTADO -ne 0 ]]
then
echo $linea | awk -F" " '{printf " %-50s %s-%s\n",$1,$2,$3}' >> $TMPFILE2
CONT=`expr $CONT + 1`
fi
done < $TMPFILE
# Generamos el mensaje de correo segun el num. de paquetes pendientes
case "$CONT" in
0)
SUBJECT="$HOSTNAME: no updates available"
echo "Hi," > $TMPFILE
echo "This is the automatic update system on $HOSTNAME" >> $TMPFILE
echo >> $TMPFILE
echo "There is no package updates available." >> $TMPFILE
echo >> $TMPFILE
echo "Thank You," >> $TMPFILE
echo "Your Computer" >> $TMPFILE
;;
1)
SUBJECT="$HOSTNAME: 1 update available"
echo "Hi," > $TMPFILE
echo "This is the automatic update system on $HOSTNAME" >> $TMPFILE
echo >> $TMPFILE
echo "There is 1 package update available. Please run the system updater." >> $TMPFILE
echo >> $TMPFILE
echo "Package available for update: " >> $TMPFILE
echo >> $TMPFILE
cat $TMPFILE2 >> $TMPFILE
echo >> $TMPFILE
echo "Thank You," >> $TMPFILE
echo "Your Computer" >> $TMPFILE
;;
*)
SUBJECT="$HOSTNAME: $CONT updates available"
echo "Hi," > $TMPFILE
echo "This is the automatic update system on $HOSTNAME" >> $TMPFILE
echo >> $TMPFILE
echo "There are $CONT package updates available. Please run the system updater." >> $TMPFILE
echo >> $TMPFILE
echo "Packages available for update: " >> $TMPFILE
echo >> $TMPFILE
cat $TMPFILE2 >> $TMPFILE
echo >> $TMPFILE
echo "Thank You," >> $TMPFILE
echo "Your Computer" >> $TMPFILE
;;
esac
# Enviamos el correo
cat $TMPFILE |mail -s "$SUBJECT" $AVISADOS
# Borrado temporales
rm -f $TMPFILE $TMPFILE2
