¿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
ypassword
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:
- Actualiza el sistema.
- Registra el resultado.
- Verifica si es necesario reiniciar.
- 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
.