Automatización en Linux¶
Este módulo explica cómo automatizar tareas en Linux usando scripts y planificadores de tareas.
La automatización es una habilidad clave para cualquier sysadmin: reduce errores humanos, ahorra tiempo y permite escalar la administración de sistemas de forma profesional.
Introducción¶
Administrar sistemas manualmente no escala.
Si haces algo más de una vez, debería estar automatizado.
En Linux, la automatización se apoya principalmente en:
- Shell scripts
- Cron y timers
- Comandos encadenados
- Filosofía UNIX (herramientas simples combinables)
Automatizar no es solo escribir scripts: es pensar en procesos repetibles y fiables.
Scripts de shell (bash)¶
Un script es un archivo de texto con comandos que se ejecutan en orden.
Ejemplo básico:
#!/bin/bash
echo "Hola, Linux"
date
Guardar como:
script.sh
Dar permisos:
chmod +x script.sh
Ejecutar:
./script.sh
⚠️ Sin permiso de ejecución, el script no se puede lanzar.
Variables y argumentos¶
Variables¶
NOMBRE="David"
echo "Hola $NOMBRE"
Argumentos¶
#!/bin/bash
echo "Primer argumento: $1"
echo "Segundo argumento: $2"
Ejecutar:
./script.sh uno dos
Control de flujo¶
Condicionales¶
if [ -f /etc/passwd ]; then
echo "El archivo existe"
else
echo "No existe"
fi
Comprobación de errores¶
comando
if [ $? -ne 0 ]; then
echo "Error al ejecutar comando"
fi
💡 Un buen script detecta errores y actúa.
Automatización con cron¶
cron permite ejecutar tareas de forma periódica.
Editar crontab del usuario:
crontab -e
Formato:
* * * * * comando
│ │ │ │ │
│ │ │ │ └─ día de la semana
│ │ │ └─── mes
│ │ └───── día del mes
│ └─────── hora
└───────── minuto
Ejemplos comunes¶
Ejecutar cada día a las 02:00:
0 2 * * * /ruta/script.sh
Cada 5 minutos:
*/5 * * * * comando
⚠️ cron no carga tu entorno: usa rutas absolutas.
systemd timers (alternativa moderna)¶
En sistemas modernos, systemd timers reemplazan o complementan cron.
Ventajas:
- Logs integrados
- Mejor control
- Dependencias
Ejemplo conceptual:
backup.servicebackup.timer
✅ Más robusto para servidores críticos.
Encadenar comandos¶
Linux permite crear automatización sin scripts largos.
Operadores¶
comando1 && comando2
comando1 || comando2
comando1 ; comando2
Ejemplo:
apt update && apt upgrade -y
Redirecciones y logs¶
Automatizar implica guardar resultados.
comando > salida.txt
comando >> salida.txt
comando 2> error.txt
Ejemplo en cron:
0 3 * * * /script.sh >> /var/log/script.log 2>&1
Idempotencia (concepto clave)¶
Un proceso es idempotente si:
Puede ejecutarse varias veces sin causar efectos secundarios.
Ejemplo malo:
useradd david
Ejemplo mejor:
id david || useradd david
💡 Idempotencia = scripts seguros.
Errores comunes¶
Errores habituales:
- No usar
#!/bin/bash - No controlar errores
- Usar rutas relativas en cron
- No generar logs
- Automatizar sin entender el proceso
- Scripts que rompen el sistema al reejecutarse
Consejo: ejecuta tus scripts a mano antes de automatizarlos.
Ejercicios prácticos¶
1. Script simple de verificación¶
#!/bin/bash
df -h
free -m
uptime
2. Script con condición¶
#!/bin/bash
if systemctl is-active ssh >/dev/null; then
echo "SSH activo"
else
echo "SSH caído"
fi
3. Programar con cron¶
crontab -e
Añadir:
*/10 * * * * /ruta/script.sh
Mentalidad¶
Un buen sysadmin piensa:
- Si se repite, se automatiza
- Primero entender, luego automatizar
- Scripts simples > scripts complejos
- Siempre logs
- La automatización debe ser segura
Automatizar es invertir tiempo hoy para ahorrar tiempo mañana.
Resumen¶
- Automatizar es clave para escalar sistemas
- Bash es la base de la automatización en Linux
- cron y systemd timers ejecutan tareas periódicas
- Control de errores e idempotencia son críticos
- Automatizar reduce errores humanos
Siguiente paso¶
En el siguiente módulo entrarás en:
Productividad del sysadmin (productividad.md)
Donde verás:
- Herramientas para trabajar más rápido
- Alias, funciones y trucos de shell
- Cómo organizar tu trabajo diario en Linux