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.service
  • backup.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