Script bash para notificar por mail actualizaciones disponibles

Los sysadmins GNU/Linux amamos todas las herramientas que automaticen tareas y simplifiquen la administración de los servidores. Este artículo presenta un script que he desarrollado para verificar a diario las actualizaciones de paquetes disponibles en los repositorios y enviar un mail con el resumen.



En entornos corporativos suelen existir aplicaciones o servicios desarrollados a medida que dependen de versiones específicas de paquetes, por lo que no se recomienda, o a veces no es posible, habilitar las actualizaciones de paquetes automáticas. En cambio se debe verificar y aplicar cada actualización de forma manual.

La idea del script, al que he llamado verificar_actualizaciones.sh, es obtener la lista de actualizaciones utilizando los gestores de paquetes (apt-get si se trata de Debian o yum si se trata de CentOS) y luego enviar un mail utilizando sendmail para notificar cuales son las actualizaciones disponibles.

He desarrollado dos versiones, una para Debian y otra para CentOS, ya que utilizan diferentes gestores de paquetes y las salidas de éstos son muy diferentes.

Versión para Debian

La versión para Debian utiliza la herramienta apt-get para obtener una lista de actualizaciones disponibles y greppara parsear la salida.

/root/scripts/verificar_actualizaciones.sh
#!/bin/sh

servidor=$(hostname)

destinatario="admin@pepe.net"

actualizaciones=$(/usr/bin/apt-get -s -q -u upgrade | grep -v '\.\.\.' | grep -v ':' | grep -v 'Inst ' | grep -v 'Conf ')

asunto="Actualizaciones disponibles para $servidor"

mensaje="Se encuentran disponibles las siguientes actualizaciones para el servidor $servidor:\n\n$actualizaciones"

echo "$mensaje" | /usr/bin/mail -s "$asunto" $destinatario

Ejemplo:

Se encuentran disponibles las siguientes actualizaciones para el servidor pepe-debian:

  libxml2
1 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.

Versión para CentOS

La versión para CentOS utiliza la herramienta yum para obtener una lista de actualizaciones disponibles y sedpara parsear la salida.

/root/scripts/verificar_actualizaciones.sh
#!/bin/sh

servidor=$(hostname)

destinatario="admin@pepe.net"

actualizaciones=$(/usr/bin/yum check-update | sed '1,/^$/d')

total=$(echo "$actualizaciones" | wc -l)

asunto="$total actualizaciones disponibles para $servidor"

mensaje="Se encuentran disponibles las siguientes actualizaciones para el servidor $servidor:

$actualizaciones

"

echo "$mensaje" | /bin/mail -s "$asunto" $destinatario

Ejemplo:

Se encuentran disponibles las siguientes actualizaciones para el servidor pepe-centos:

NetworkManager.x86_64             1:0.8.1-34.el6_3                 updates
NetworkManager-glib.x86_64        1:0.8.1-34.el6_3                 updates
NetworkManager-gnome.x86_64       1:0.8.1-34.el6_3                 updates
bind-libs.x86_64                  32:9.8.2-0.10.rc1.el6_3.6        updates
bind-utils.x86_64                 32:9.8.2-0.10.rc1.el6_3.6        updates
firefox.x86_64                    10.0.11-1.el6.centos             updates
google-chrome-stable.x86_64       23.0.1271.95-169798              google-chrome
kexec-tools.x86_64                2.0.0-245.el6_3.1                updates
libxml2.x86_64                    2.7.6-8.el6_3.4                  updates
libxml2-devel.x86_64              2.7.6-8.el6_3.4                  updates
libxml2-python.x86_64             2.7.6-8.el6_3.4                  updates
mysql.x86_64                      5.1.66-2.el6_3                   updates
mysql-libs.x86_64                 5.1.66-2.el6_3                   updates
mysql-server.x86_64               5.1.66-2.el6_3                   updates
pango.x86_64                      1.28.1-7.el6_3                   updates
pango-devel.x86_64                1.28.1-7.el6_3                   updates
qemu-img.x86_64                   2:0.12.1.2-2.295.el6_3.8         updates
qemu-kvm.x86_64                   2:0.12.1.2-2.295.el6_3.8         updates
qemu-kvm-tools.x86_64             2:0.12.1.2-2.295.el6_3.8         updates
unixODBC.x86_64                   2.2.14-12.el6_3                  updates

Cron

Se debe agregar el siguiente link simbólico en el directorio /etc/cron.daily/ para que el demonio crond lo ejecute automáticamente una vez por día:

ln -s /root/scripts/verificar_actualizaciones.sh /etc/cron.daily/actualizaciones

De esta forma nos llegará un mail por día indicando las actualizaciones disponibles.



Suscribirse

    Registrate para recibir las novedades y artículos por correo electrónico.

Linuxito en G+