Cómo actualizar Debian automáticamente y enviar el log por correo usando msmtp

Cómo actualizar Debian automáticamente y enviar el log por correo usando msmtp

¿Te gustaría que tu servidor se mantenga siempre al día sin que tengas que mover un dedo? En esta guía vemos cómo crear un script que actualiza automáticamente tu sistema, detecta si necesita reinicio y te envía un correo con el resumen, todo usando apt, msmtp y un toque de automatización inteligente. Ideal para administradores ocupados (o precavidos).

Paso 1: Instalar msmtp y mailutils

Primero, instalamos los paquetes necesarios para poder enviar correos desde scripts:

sudo apt update
sudo apt install -y msmtp mailutils

Paso 2: Configurar msmtp con tu SMTP

Creamos el archivo de configuración para que msmtp pueda conectarse a tu servidor SMTP (por ejemplo, Gmail, Outlook o tu servidor propio).

📁 Archivo: /root/.msmtprc

# Archivo de configuración para msmtp
defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        ~/.msmtp.log

account        default
host           smtp.gmail.com
port           587
from           tu_correo@gmail.com
user           tu_correo@gmail.com
password       TU_CONTRASEÑA

# Usar esta cuenta por defecto
account default : default

✅ Asegúrate de cambiar host, user, from y password con tus datos reales.

📌 Establece los permisos correctos para proteger la contraseña:

chmod 600 /root/.msmtprc

Prueba el envío de correo

echo "Este es un correo de prueba" | mail -s "Prueba SMTP con msmtp" tu_correo@gmail.com

Si lo recibes, ¡todo está bien!

Paso 3: Crear el script de actualización con notificación

Creamos un script que:

  1. Actualiza el sistema.
  2. Registra el resultado.
  3. Verifica si es necesario reiniciar.
  4. Envía un correo con el log.

📁 Archivo: /root/updSMTP.sh

#!/bin/bash

# Configuración
DESTINATARIO="tu_correo@gmail.com"
ASUNTO="Actualización del servidor $(hostname) - $(date '+%Y-%m-%d %H:%M:%S')"
LOG="/tmp/actualizacion_full-upgrade_$(date +%Y%m%d_%H%M%S).log"

# Ejecutar actualización y guardar salida
{
  echo "====== ACTUALIZACIÓN DEL SISTEMA ======"
  echo "Fecha: $(date)"
  echo "Host: $(hostname)"
  echo

  apt update
  echo
  echo "------ APT FULL-UPGRADE ------"
  apt -y full-upgrade
  echo
  echo "------ LIMPIEZA ------"
  apt -y autoremove
  apt clean
  echo

  # Verificar si se requiere reinicio
  if [ -f /var/run/reboot-required ]; then
    echo "⚠️ Se requiere reiniciar el sistema."
  else
    echo "✅ No se requiere reinicio."
  fi

  echo
  echo "====== FIN DEL PROCESO ======"
  echo "Hora de finalización: $(date)"

} &> "$LOG"

# Enviar correo con msmtp a través de mail
cat "$LOG" | mail -s "$ASUNTO" "$DESTINATARIO"

# Eliminar el log
rm "$LOG"

Haz el script ejecutable:

chmod +x /root/updSMTP.sh

Paso 4 (Opcional): Automatiza con cron

Si deseas que este script se ejecute automáticamente cada noche:

sudo crontab -e

Y agrega:

0 3 * * * /root/updSMTP.sh

Esto ejecutará el script todos los días a las 3:00 AM.

Resultado final

Con esta configuración:

  • El sistema se actualizará usando apt full-upgrade.
  • Se enviará un resumen detallado del proceso por correo, incluyendo si es necesario reiniciar.
  • Todo funciona de forma automatizada y segura.

Consejo final

Evita ejecutar scripts con sudo si ya estás corriendo como root, y asegúrate de que tu archivo .msmtprc esté siempre seguro. Para un entorno de producción, considera también monitoreo con Zabbix o Nagios.

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *