Bash Script – DÍA 3

Bucles y automatización: for, while, until + procesar archivos línea a línea


1. Objetivo del día

Aprender a repetir tareas de forma automática:

  • for → recorrer listas, rangos y resultados de comandos
  • while → ejecutar mientras una condición se cumpla
  • until → ejecutar hasta que algo ocurra
  • leer archivos línea a línea (fundamental para sysadmins)
  • automatizar tareas repetitivas

Este es uno de los días más prácticos del curso.


2. Requisitos

  • Saber condicionales (Día 2)
  • Saber ejecutar scripts (Día 1)

3. Bucles for

El for es perfecto para recorrer listas de valores.


3.1. Recorrer una lista fija

for animal in perro gato caballo; do
    echo "Animal: $animal"
done

3.2. Recorrer números

for i in {1..5}; do
    echo "Número: $i"
done

3.3. Recorrer resultados de un comando

Ejemplo: listar archivos del directorio actual:

for archivo in $(ls); do
    echo "Archivo: $archivo"
done

Ejemplo real: mostrar procesos relacionados con ssh:

for pid in $(pgrep ssh); do
    echo "Proceso SSH: $pid"
done

4. Bucle while

Ejecuta mientras una condición sea verdadera.


4.1. Contador simple

contador=1

while [ $contador -le 5 ]; do
    echo "Cuenta: $contador"
    contador=$((contador + 1))
done

4.2. Esperar hasta que un servicio responda

Ejemplo profesional:

while ! ping -c 1 servidor >/dev/null 2>&1; do
    echo "Esperando a que el servidor responda..."
    sleep 2
done

echo "El servidor está activo"

5. Bucle until

Hace lo contrario: ejecuta hasta que algo ocurra.


5.1. Ejemplo simple

contador=1

until [ $contador -gt 5 ]; do
    echo "Cuenta: $contador"
    contador=$((contador + 1))
done

6. Leer un archivo línea a línea (SUPER IMPORTANTE)

Esto es esencial para:

  • probar conectividad a una lista de servidores
  • hacer ping a varias IP
  • procesar tareas en lote
  • comprobaciones de health-check
  • automatizar tareas repetitivas

Forma profesional:

while IFS= read -r linea; do
    echo "Procesando: $linea"
done < archivo.txt

🔹 IFS= evita romper líneas por espacios
🔹 -r evita interpretar caracteres especiales


6.1. EJEMPLO REAL: Comprobar si servidores responden al ping

Archivo servidores.txt:

srv01
srv02
8.8.8.8
google.com

Script:

#!/bin/bash

while IFS= read -r srv; do
    echo "Probando $srv"
    if ping -c 1 "$srv" >/dev/null 2>&1; then
        echo "$srv responde"
    else
        echo "$srv NO responde"
    fi
    echo "--------------"
done < servidores.txt

Esto es EXACTAMENTE lo que usa un sysadmin en la vida real.


6.2. EJEMPLO REAL: Verificar resolución DNS

#!/bin/bash

while IFS= read -r host; do
    echo "Resolviendo $host"
    if nslookup "$host" >/dev/null 2>&1; then
        echo "OK"
    else
        echo "FALLO"
    fi
done < hosts.txt

6.3. EJEMPLO REAL: Verificar si un puerto está abierto

#!/bin/bash

while IFS= read -r host; do
    echo -n "Probando $host:443... "
    if nc -z "$host" 443 >/dev/null 2>&1; then
        echo "ABIERTO"
    else
        echo "CERRADO"
    fi
done < lista_hosts.txt

7. Práctica guiada (20–30 minutos)

7.1. Crear archivo con una lista de cosas

echo -e "uno\ndos\ntres" > lista.txt

7.2. Crear script que recorra esta lista

nano recorrer.sh

Poner:

#!/bin/bash

while IFS= read -r item; do
    echo "Item: $item"
done < lista.txt

7.3. Crear script que haga 5 pings a google

for i in {1..5}; do
    ping -c 1 google.com
done

8. Checklist del Día 3

  • Usas bucles for con listas
  • Usas bucles for con rangos {1..N}
  • Usas while para repetir acciones
  • Sabes cuándo usar until
  • Lees archivos línea a línea
  • Procesas listas de servidores o IPs
  • Puedes automatizar tareas repetitivas

Si marcas todo → Día 3 superado.


9. Ejercicio sugerido

Crea un script llamado:

healthcheck.sh

Que:

  1. Lea un archivo servidores.txt
  2. Para cada servidor:
    • ping
    • nslookup
    • comprobar puerto 443 con nc
  3. Muestre un informe como:
srv01: ping OK, dns OK, puerto OK
srv02: ping FAIL, dns OK, puerto FAIL

Esto será la base del proyecto final.


10. Día 3 completado

Aquí es donde Bash empieza a brillar:
Ya sabes automatizar repeticiones y procesar listas completas.

Mañana seguimos con:

👉 Día 4 – Argumentos y parámetros especiales ($1, $#, «$@», shift)
Es el día que permite hacer scripts REUTILIZABLES y pasarles datos desde fuera.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies