miércoles, 25 de enero de 2012

Otro Script en bash que permite vigilar espacios en filesystem

Lo que debemos hacer es crearnos un script .sh como este al que he denominado vigilaespacio.sh:

#!/bin/bash

ADMIN="admindelssistema@midominio.com"

# Nivel de alarma al 85%
ALERTA=85

df -g | grep -vE '^Filesystem|tmpfs' | awk '{ print $4 " " $1 }' | while read output;

do
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )

# -ge es mayor o igual a
if [ "$usep" -ge "$ALERTA" ]; then
  echo "Poco espacio en '$partition ($usep%)' del servidor $(hostname) en el dia  $(date)" >> alerta-disco-$(date +%d-%m-%y_%T)-$ALERT.txt
  cat alerta-disco-$(date +%d-%m-%y_%T)-$ALERTA.txt | mail -s "Filesystem llenandose.  Tengo una alerta de poco espacio en disco del servidor $(hostname)" $ADMIN
fi
done


Le damos permisos para ejecurse 777 o 755 el que prefieras y agregamos una línea en el crontab que lo invoque cada x tiempo, por ejemplo esta línea lo llama cada hora, todos los días:

00 * * * * /scripts/vigilaespacio.sh

Básicamente lo que hace el script es chequear nuestro filesystem y capturar (para mi sistema) la columna número 4 (%Used) de la instrucción df -g (por ser AIX, si tu sistema es Linux o Solaris debes cambiar df -g por df -h; lo he marcado en rojo para que lo tengas en cuenta).

Si se cumple la condición de la variable ALERTA se envia un correo a los destinatarios indicando el % y el filesystem implicado.