Home » Automatiza Linux rápido y seguro
Shell scripting básico para automatizar tareas simples en Linux desde la terminal

Automatiza Linux rápido y seguro

Aprende shell scripting básico con ejemplos prácticos para automatizar tareas simples en Linux y dar tus primeros pasos reales en automatización DevOps.

Automatizar tareas con shell scripting básico es uno de los primeros pasos para dejar atrás el trabajo manual repetitivo y empezar a pensar como un DevOps. No necesitas escribir scripts complejos ni dominar Bash a profundidad desde el primer día. Con unas cuantas estructuras simples y el uso inteligente de herramientas estándar de Linux, puedes ahorrar tiempo, reducir errores y ganar consistencia operativa.

En este tutorial veremos cómo automatizar tareas simples usando shell scripting básico, con ejemplos prácticos que puedes aplicar hoy mismo en tu entorno local, servidores o pipelines iniciales.


¿Por qué automatizar tareas con shell scripting básico?

En muchos equipos, todavía es común encontrar tareas como:

  • Limpieza manual de logs
  • Copias de seguridad ejecutadas “a mano”
  • Verificación repetitiva de procesos o servicios
  • Comandos largos copiados desde un documento

Estas tareas no solo consumen tiempo, también introducen errores humanos. El shell scripting básico permite encapsular ese conocimiento operativo en scripts simples, reproducibles y fáciles de versionar.

La automatización no empieza con Kubernetes ni Terraform. Empieza aquí.


Preparando el entorno para shell scripting

Antes de escribir tu primer script, asegúrate de tener lo básico:

  • Un sistema Linux o macOS
  • Acceso a una terminal
  • Un editor de texto (nano, vim, VS Code, etc.)

Crea un archivo nuevo:

nano backup.sh

Todo script debe empezar con el shebang:

#!/bin/bash

Luego dale permisos de ejecución:

chmod +x backup.sh

A partir de aquí, todo lo que escribas puede convertirse en una tarea automatizada.


Variables: el primer bloque de automatización

Las variables permiten que tus scripts sean reutilizables y fáciles de modificar.

Ejemplo simple:

#!/bin/bash

BACKUP_DIR="/opt/backups"
DATE=$(date +%F)

echo "Creando backup en $BACKUP_DIR con fecha $DATE"

Tip DevOps:
Usa variables al inicio del script para configuración, y deja la lógica más abajo. Esto facilita mantenimiento y lectura por otros.


Automatizando backups simples con tar

Un caso clásico de shell scripting básico es automatizar backups.

Ejemplo: backup de un directorio web.

#!/bin/bash

SOURCE_DIR="/var/www"
BACKUP_DIR="/opt/backups"
DATE=$(date +%F)

mkdir -p "$BACKUP_DIR"

tar -czf "$BACKUP_DIR/web-$DATE.tar.gz" "$SOURCE_DIR"

echo "Backup completado: web-$DATE.tar.gz"

Con esto ya eliminaste:

  • Comandos manuales
  • Riesgo de olvidar fechas
  • Errores de tipeo

Uso de condicionales para controlar errores

Un script sin validaciones es una bomba de tiempo.

Ejemplo básico usando if:

if [ -d "$SOURCE_DIR" ]; then
  tar -czf "$BACKUP_DIR/web-$DATE.tar.gz" "$SOURCE_DIR"
else
  echo "El directorio no existe"
  exit 1
fi

Tip DevOps:
Siempre valida precondiciones (directorios, permisos, variables). Esto es clave cuando el script crece o se ejecuta automáticamente.


Automatizando limpieza de archivos antiguos

Otra tarea común: limpiar archivos viejos.

Ejemplo: eliminar backups de más de 7 días.

find /opt/backups -type f -mtime +7 -name "*.tar.gz" -exec rm {} \;

Automatizado dentro de un script:

#!/bin/bash

BACKUP_DIR="/opt/backups"

find "$BACKUP_DIR" -type f -mtime +7 -name "*.tar.gz" -exec rm {} \;

echo "Backups antiguos eliminados"

Este tipo de shell scripting básico es extremadamente común en entornos productivos.


Combinando comandos: el verdadero poder del shell

El shell no es solo Bash. Es la composición de herramientas pequeñas.

Ejemplo: monitorear uso de disco y alertar.

USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

if [ "$USAGE" -gt 80 ]; then
  echo "Uso de disco crítico: $USAGE%"
fi

Aquí combinamos:

  • df
  • awk
  • sed
  • condicionales

Tip DevOps:
Aprende a encadenar comandos, no a memorizar herramientas aisladas.


Bucles para tareas repetitivas

Los bucles permiten automatizar acciones repetidas sobre múltiples elementos.

Ejemplo: verificar múltiples servicios.

for service in nginx docker ssh
do
  systemctl is-active --quiet $service
  if [ $? -ne 0 ]; then
    echo "Servicio caído: $service"
  fi
done

Esto reemplaza múltiples comandos manuales por un solo script reproducible.


Automatizando con cron: llevar el script a producción

Un script que no se ejecuta automáticamente sigue siendo manual.

Edita el crontab:

crontab -e

Ejemplo: ejecutar backup diario a las 2 AM.

0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1

Tip DevOps:
Siempre redirige salida estándar y errores a logs. Diagnosticarás problemas en minutos, no horas.


Buenas prácticas en shell scripting básico

Algunos consejos clave desde experiencia real:

  • Usa set -e para detener el script ante errores
  • Agrega echo claros para logging
  • Evita hardcodear rutas críticas
  • Versiona tus scripts en Git
  • Documenta el propósito al inicio del archivo

Ejemplo de encabezado:

# Script: backup.sh
# Autor: Angel Rengifo
# Descripción: Backup diario de directorio web

De scripts simples a automatización real

El shell scripting básico no compite con herramientas modernas. Las complementa.

Muchos pipelines CI/CD, contenedores y sistemas de configuración siguen usando scripts shell como pegamento entre herramientas. Dominar este nivel te da una base sólida para avanzar hacia automatización más avanzada.


Conclusión

Automatizar tareas con shell scripting básico es una habilidad fundamental para cualquier profesional que trabaje con Linux, servidores o entornos cloud. No se trata de escribir scripts perfectos, sino de eliminar trabajo manual innecesario y ganar control operativo paso a paso.

Si hoy automatizas una tarea pequeña, mañana estarás automatizando sistemas completos.

¿Qué tarea manual sigues haciendo hoy que podrías automatizar con un simple script?

Cuéntalo en los comentarios o comparte este artículo con alguien que aún vive en la terminal copiando comandos.

Post navigation

Deja un comentario

Deja una respuesta

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