Shell scripts para monitorizar espacio en disco

por | 29 noviembre, 2019

Muy buenas!!

Os dejo un par de scripts para monitorizar el espacio en disco.

Hay dos versiones, una para chequear un solo filesystem y otro, para chequear el espacio de todos los filesystems de nuestra máquina.

Sistema Operativo en el que se han probado los scripts –> CentOS / RHEL 7.7

Paquetes que seguramente necesitaréis instalar –> mailx ( yum -y install mailx)

Os dejo también un enlace al proyecto en mi perfil de GitHub:

https://github.com/miguelcarretas/check-filesystems-space


Check de un solo filesystem (space.sh):

#!/bin/bash

# Sistemas de ficheros a chequear
device=/mnt/dir1/subdir1

# Destinatario del correo
destinatario="destinatario@example.com"

####### Cuerpo del script ########

# Consultamos la ocupación del dispositivo
ocupacion=$(df -h | grep $device$ | expand | tr -s " " | cut -d " " -f5 | cut -d "%" -f1)

# Si la ocupación es mayor al 85%…
if [ $ocupacion -ge 85 ];
then
        # Preparación y envío del correo
        df -h > storage.txt
        asunto=$(echo "Alerta de espacio en " `hostname` " – " $device)
        mailx -S from="emisor@example.com" -s "$asunto" $destinatario < storage.txt
fi

# 5 * * * * root sh /root/scripts/space.sh >/dev/null 2>&1

Check para todos los filesystems del sistema (space_v2.sh):

#!/bin/bash

# Destinatario del correo
destinatario="destinatario@example.com"

####### Cuerpo del script ########

df -h | awk '{print $6}' | egrep -v "Montado" > /tmp/filesystems.list

while read line
do

# Consultamos la ocupación del dispositivo

ocupacion=`df -h | grep $line$ | awk '{print $5}' | cut -d"%" -f1`


# Si la ocupación es mayor a un valor en %…
if [ $ocupacion -ge 80 ];
then
        # Preparación y envío del correo
        df -h | grep $line$ > storage.txt
        asunto=$(echo "Alerta de espacio en " `hostname` " – " $line)
        mailx -S from="emisor@example.com" -s "$asunto" $destinatario < storage.txt
fi

done < /tmp/filesystems.list

# 5 * * * * root sh /root/scripts/space_v2.sh >/dev/null 2>&1

Es importante que si queréis automatizar el chequeo, creéis una tarea programada bajo /etc/cron.d/ y reiniciéis el servicio de crond (systemctl restart crond) .

En los scripts, en la última línea comentada, tenéis un ejemplo.

Espero que os sea de utilidad.

Un saludo Sysadmins! 🙂

About: Miguel Carretas Perulero

Miguel Carretas Perulero ha escrito 80 artículos en este blog.

Deja un comentario