Bash Scripting para DevOps, SREs y Sysadmins: Automatiza tu Infraestructura

DanDan
2 min read

Dominar Bash es uno de los superpoderes más valiosos para cualquier perfil técnico que gestiona sistemas. Ya sea para automatizar tareas repetitivas, mantener entornos consistentes o ejecutar acciones masivas con precisión, un buen script puede ahorrar horas… o salvarte en plena madrugada.

Este artículo te da un repaso práctico y directo de Bash scripting aplicado a tareas reales de un DevOps, SRE o sysadmin.

Estructura básica de un script

#!/bin/bash

# Esto es un comentario
echo "Comenzando tarea..."

# Condición
if [ -f /etc/passwd ]; then
  echo "El archivo existe"
fi

# Bucle
for i in {1..3}; do
  echo "Intento $i"
done

Guarda este archivo como script.sh, dale permisos y ejecútalo:

chmod +x script.sh
./script.sh

Script 1: Verificar si un servicio está activo

#!/bin/bash

SERVICE=$1

if systemctl is-active --quiet "$SERVICE"; then
  echo "$SERVICE está activo"
else
  echo "$SERVICE NO está activo"
fi

Uso:

./check_service.sh nginx

Script 2: Backup de logs antiguos

#!/bin/bash

SRC="/var/log"
DST="/backup/logs"
DAYS=7

mkdir -p "$DST"
find "$SRC" -type f -mtime +$DAYS -exec tar -rvf "$DST/old_logs.tar" {} \;

Script 3: Test de conectividad a varios endpoints

#!/bin/bash

URLS=("https://google.com" "https://github.com" "https://api.servicio.com")

for URL in "${URLS[@]}"; do
  if curl -s --head --fail "$URL" > /dev/null; then
    echo "✅ $URL OK"
  else
    echo "❌ $URL NO responde"
  fi
done

Script 4: Limpiar contenedores Docker detenidos

#!/bin/bash

echo "Eliminando contenedores detenidos..."
docker container prune -f

Script 5: Comprobar uso de disco en múltiples servidores

#!/bin/bash

SERVERS=("srv1" "srv2" "srv3")

for HOST in "${SERVERS[@]}"; do
  echo "--- $HOST ---"
  ssh "$HOST" "df -h /"
done

Requiere acceso SSH sin contraseña configurado con claves públicas.

Buenas prácticas

  • Usa #!/bin/bash o #!/usr/bin/env bash siempre.

  • Valida entradas del usuario ($1, $2, etc.).

  • Usa set -euo pipefail para scripts críticos.

  • Documenta con comentarios.

  • Usa cron o systemd timers para ejecutar periódicamente.

Saber Bash no es solo escribir comandos en un archivo. Es pensar en términos de automatización, control, trazabilidad y eficiencia. Es construir confianza en tus operaciones.

Y en The Rabbit Hole, Bash es la varita mágica del ingeniero moderno. 🐇

0
Subscribe to my newsletter

Read articles from Dan directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Dan
Dan