Configuración simple de smartd con envío de alertas a consola, escritorio y Gmail

Configuración básica del demonio smartd para que avise en terminal, escritorio (GTK / KDE) y correo electrónico Gmail (usando curl) si hay alguna falla o subida de temperatura en el disco.

Configuración para smartd: /etc/smartd.conf

DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././20|L/../../6/21) -W 3,30,31 -m usuario@gmail.com -M exec /usr/bin/smartdnotify

El demonio smartd con la opción -W hace un seguimiento de las temperaturas del disco y alerta si se elevan demasiado rápido o llega a un límite determinado. Para el ejemplo, el servicio avisa y registra cuando se produzcan cambios de temperatura de 3 o más grados o cuando algún disco alcance 30 grados. A partir de 31 grados además de registrarlo envía la alerta por correos electrónico (-m).

Con la opción “-s” smartd puede definir el momento (día y hora) de hacer las pruebas automáticas. la configuración del ejemplo especifica un test corto todos los días entre las 20-21 de la noche y uno largo los sábados entre las 21-22.

Para poder enviar correos utilizando una cuenta Gmail y sin usar nada más que curl, debemos crear el fichero /usr/bin/smartdnotify.

#! /bin/sh
 
echo "From: SMARTD <usuario@gmail.com>
To: usuario@gmail.com
Date: $date
Subject: S.M.A.R.T
 
" > /tmp/smartdmail
 
echo "$SMARTD_MESSAGE" >> /tmp/smartdmail
curl --url "smtps://smtp.gmail.com:465" --ssl-reqd  --mail-from "usuario@gmail.com" --mail-rcpt "usuario@gmail.com"  --upload-file /tmp/smartdmail --user "usuario:PASSWORD" > /dev/null 2>&1 &
rm /tmp/smartdmail
 
# Notify user
wall "$SMARTD_MESSAGE"
 
# Si se dispone de zenity (GTK) o Kdialog se puede usar el siguiente comando para notificaciones de escritorio. (ej. privilegios del usuario "busi").
#export DISPLAY=:0.0
#export XAUTHORITY=/home/busi/.Xauthority
 
# Zenity
# su busi -c 'zenity --warning --text "$SMARTD_MESSAGE" --display=:0.0'
 
# Si se dispone de Kdialog se puede usar el siguiente comando para notificaciones de escritorio.
# su busi -c 'kdialog --sorry "$SMARTD_MESSAGE"'

A cada alerta producida se ejecutará el script smartdnotify, enviando un mail con curl y mostrando en todas las terminales del sistema la alerta.

Ejemplo de notificación SMART en consola.

Mensaje de difusión general (broadcast) de busi@busiarch (pts/0) (Mon Apr  6 0
 
Device: /dev/sdc [SAT], Temperature 32 Celsius reached critical limit of 21 Celsius (Min/Max ??/32)

Administración del demonio smartd en Arch GNU/Linux.

# Iniciar el demonio.
systemctl start smartd
# Comprobar el estado del demonio smartd.
systemctl status smartd
# Inicio automático de smartd en el arranque del sistema.
systemctl enable smartd
# Leer logs de smartd en Arch.
journalctl -u smartd