Inicio > Linux > CheckUpdatesRedHat4

CheckUpdatesRedHat4

Viernes, 21 de enero de 2011

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

Linux ,

  1. Sin comentarios aún.
  1. Sin trackbacks aún.