Controlar el espacio disponible en nuestro sistema de archivos

Imagen de jriosa
0 puntos

Tenía la siguiente necesidad, saber como de lleno tengo nuestros discos duros y que sea nuestro ordenador el que nos dé una señal de aviso para poder conectarnos a estos y tomar las medidas necesarias.

Yo tengo varias máquinas con una distribución de linux, tengo además un servidor de correo que necesita autenticarse para enviar correo.
Lo que se me ha ocurrido es hacer un programa que se ejecute, por ejemplo, cada hora y compruebe el uso de nuestro sistema de ficheros y si superamos un umbral que nosostros decidimos nos avise.

Para que todo funcione necesitamos:

  • un servidor de correo que nos proporcione una cuenta con usuario, contraseña, para poder enviar la alerta.
  • tener instalado el programa sendEmail, el cual se puede obtener desde los repositorios.
  • usar el programa df.

Básicamente hay que ejecutar el comando df -h y ver que sistemas de archivos queremos monitorizar. Una vez sepamos este dato, hay que colocarlo en el código del programa y cambiar la variable de porcentaje de aviso, que por defecto está al 85%, si se quiere.
Además deberemos cambiar los parámetros de envío de correo por unos válidos y listo.

Una vez que nuestro programa haga lo que nosotros queremos debemos automatizar que este se ejecute, para que nos haga llegar el aviso el aviso.

Aquí os adjunto el código por si a alguien le es útil

#!/bin/bash
# versión 0.0.1, uso G.P.L.
# script para saber si se ha llenado nuestros sitemas de archivos
# ejecutamos cada día nuestro ordenador y enviamos por correo electrónico si es el caso
# pocentaje de aviso límite, por ejemplo 80%, debe ser un número
Porcentaje_Aviso=85
Porcentaje_sistemas_Archivos=0
# Sistemas de archivo a buscar en el equipo
# Debe mirarse en cada equipo los suyos dependiendo del resultado del comando df -h
#S.ficheros            Tamaño Usado  Disp Uso% Montado en|@#
#/dev/sda3              20G  3,8G   15G  21% /
#varrun                506M  104K  506M   1% /var/run
#varlock               506M     0  506M   0% /var/lock
#udev                  506M   60K  506M   1% /dev
#ºdevshm                506M  176K  505M   1% /dev/shm
#lrm                   506M   38M  468M   8% /lib/modules/2.6.24-18-generic/volatile
#/dev/sda4              70G  1,9G   65G   3% /home
#gvfs-fuse-daemon       20G  3,8G   15G  21% /home/jra/.gvfs
#/dev/sdb1              75G   32K   75G   1% /media/SPD5210CC
#Sistemas de archivos a mirar
Sistemas_Archivos="/dev/sda3 /dev/sda4"


for SA in $Sistemas_Archivos; do
	echo "Analizando el sistema de archivo $SA"
	Porcentaje_sistemas_Archivos=$(df -h | grep $SA | awk '{ print $5 }')
	# Nos devuelve un número con tanto por ciento, por ejemplo 21%, Debemos quitar % para comparar números
	echo "El uso actual del sistema de archivo $SA es del $Porcentaje_sistemas_Archivos"
	if [ ${Porcentaje_sistemas_Archivos%"%"} -gt $Porcentaje_Aviso ];then
		echo "Se esta llenado el sistema de archivo es $SA"
		# enviamos aviso por correo electrónico
		# Asunto del correo
		Asunto="El sistema de archivos $SA en el $HOSTNAME ha sobrepasado el $Porcentaje_Aviso de uso con un $Porcentaje_sistemas_Archivos"
		# Email To ?
		De="usuario@dominio.com"
		# Email text/message
		Cuerpo="Intenta reducir el espacio en $SA de $HOSTNAME para no colapsar el sistema"
		# Persona destinatario del mensaje
		Destinatario="administrador@midominio.com"
		# Servidor de correo
		ServidorSMTP="servidor.dominio.com"
		# Usuario de envío
		Usuario="usuario"
		# Contraseña de envío
		Password="contraseña"
		# enviamos using sendEmail
		sendEmail -f "$De" -t "$Destinatario" -u "$Asunto" -m "$Cuerpo" -s "$ServidorSMTP" -xu "$Usuario" -xp "$Password"
	fi
done

Imagen de pionero
+1
0
-1

sin palabras, muy buen aporte, ya lo probe y anda impecable

+1
0
-1