Automatización de tareas de mantenimiento mediante scripts: Escribir un script básico (en PowerShell o Bash) que compruebe el espacio libre en disco y envíe un aviso o limpie archivos temporales automáticamente.
Objetivo:
Diseñar, programar y ejecutar un script automatizado en entornos Windows (PowerShell) o GNU/Linux (Bash) capaz de auditar en tiempo real el espacio libre de almacenamiento en las unidades del sistema, evaluando si se supera un umbral crítico de saturación para desencadenar de forma autónoma una alerta o la purga preventiva de archivos temporales.
Escenario:
- Una máquina virtual o equipo físico con un sistema operativo Windows o GNU/Linux.
- Privilegios de usuario estándar o administrador para la ejecución de scripts de mantenimiento y acceso a los directorios temporales del sistema.
Instrucciones:
Opción A: Script de automatización en entornos Windows (PowerShell)
- Abre una terminal de PowerShell como administrador y crea un fichero de script (por ejemplo,
mantenimiento.ps1):# Script de comprobación de espacio en disco y purga de temporales $unidad = Get-PSDrive C $porcentajeLibre = ($unidad.Free / ($unidad.Used + $unidad.Free)) * 100 Write-Host "Espacio libre actual en C: $([math]::Round($porcentajeLibre, 2))%" # Si el espacio libre baja del 20%, limpiar temporales automáticamente if ($porcentajeLibre -lt 20) { Write-Host "Alerta: Espacio crítico. Limpiando archivos temporales..." -ForegroundColor Yellow Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue Write-Host "Limpieza completada con éxito." -ForegroundColor Green } else { Write-Host "El espacio en disco se encuentra en niveles óptimos." -ForegroundColor Cyan } - Permite la ejecución de scripts en el equipo si está restringido y ejecuta el fichero creado:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser .\mantenimiento.ps1
Opción B: Script de automatización en entornos GNU/Linux (Bash)
- Abre una terminal en tu distribución Linux y crea un fichero de script de mantenimiento (por ejemplo,
mantenimiento.sh):nano ~/mantenimiento.sh
- Añade el siguiente código para evaluar el porcentaje de uso de la partición raíz y purgar los ficheros temporales si supera el umbral:
#!/bin/bash # Obtener el porcentaje de uso de la partición raíz / USO_DISCO=$(df / | grep / | awk '{print $5}' | sed 's/%//g') echo "Uso actual de la partición raíz: $USO_DISCO%" # Si el uso supera el 80% (equivalente a menos del 20% libre) if [ "$USO_DISCO" -gt 80 ]; then echo "Alerta: Espacio de disco bajo mínimos. Purgando directorio /tmp..." sudo rm -rf /tmp/* echo "Limpieza de temporales finalizada." else echo "El almacenamiento del sistema es correcto." fi - Guarda el fichero, asígnale permisos de ejecución y ejecútalo:
chmod +x ~/mantenimiento.sh ~/mantenimiento.sh
Verificación:
- Comprueba que la consola muestra correctamente los cálculos del porcentaje de espacio libre u ocupado en el disco principal del equipo.
- Verifica que las rutas de almacenamiento temporal se purgan de manera limpia cuando se simula una situación de bajo espacio, sin generar errores fatales en los procesos en segundo plano.
Preguntas de reflexión:
- ¿Por qué la automatización de tareas preventivas mediante scripts reduce drásticamente la carga operativa de los administradores de sistemas en comparación con las revisiones manuales?
- ¿Qué riesgos potenciales conlleva programar un script de purga automática de ficheros temporales si no se filtran adecuadamente los archivos bloqueados o en activo uso por el sistema?
- ¿Cómo se puede integrar este tipo de scripts automatizados en el programador de tareas del sistema operativo (Task Scheduler o Cron) para que se ejecuten de forma desatendida sin intervención humana?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Por qué es clave automatizar mediante scripts frente a revisiones manuales?
Los sistemas informáticos manejan volúmenes masivos de datos cambiantes. La revisión manual depende enteramente del factor humano y del olvido, mientras que los scripts automatizados actúan de forma preventiva y constante las 24 horas del día, detectando incidencias incipientes antes de que se conviertan en fallos críticos de saturación.
2. ¿Qué riesgos implica una purga automática mal diseñada de temporales?
Si un script borra de forma indiscriminada todos los ficheros de una ruta temporal sin verificar si están abiertos o bloqueados por aplicaciones activas, puede interrumpir abruptamente procesos críticos del sistema operativo, provocar cierres forzosos de sesiones de usuario o corromper datos de programas que dependían de esos archivos temporales.
3. ¿Cómo se integran estos scripts en el programador del sistema?
En Windows se utiliza el Programador de tareas (Task Scheduler) para lanzar el fichero PowerShell con privilegios elevados en función de un desencadenante temporal (ej. diariamente a medianoche). En GNU/Linux se emplea la tabla de tareas de Cron o temporizadores avanzados de Systemd Timers para programar su ejecución automática de forma periódica.