Bash Script – DÍA 7

Proyecto final: Script profesional de chequeo completo de servidor

(el mejor cierre práctico para un profesional de sistemas)


1. Objetivo del día

Crear un script real de producción, capaz de hacer:

  • ping a un servidor
  • comprobación DNS
  • comprobación de puerto
  • comprobación HTTP (si aplica)
  • mostrar CPU, RAM y disco
  • generar un informe limpio
  • aceptar argumentos o archivo de hosts
  • usar funciones, pipes, redirecciones y ejecución segura

Este proyecto te convierte en alguien capaz de escribir scripts para cualquier equipo técnico.


2. Estructura profesional del script

Tu script tendrá 4 bloques:

#!/bin/bash

# 1. Configuración y validaciones
# 2. Funciones
# 3. Lógica principal
# 4. Ejecución

Esto es estándar en scripts serios.


3. Contenido del script (por secciones)

Aquí tienes un script completo para estudiarlo, modificarlo o adaptarlo según su entorno.


3.1. Configuración inicial

#!/bin/bash

# --- Configuración inicial ---
LOG="informe_servidor.log"
> "$LOG"    # Vacía el log al iniciar

if [[ $# -lt 1 ]]; then
    echo "Uso: $0 <host1> [host2 host3 ...]  o  $0 -f archivo_de_hosts"
    exit 1
fi

3.2. Funciones del script

# --- Funciones ---

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG"
}

check_ping() {
    ping -c1 "$1" >/dev/null 2>&1
    [[ $? -eq 0 ]] && echo "OK" || echo "FAIL"
}

check_dns() {
    nslookup "$1" >/dev/null 2>&1
    [[ $? -eq 0 ]] && echo "OK" || echo "FAIL"
}

check_port() {
    nc -z "$1" "$2" >/dev/null 2>&1
    [[ $? -eq 0 ]] && echo "ABIERTO" || echo "CERRADO"
}

check_http() {
    status=$(curl -s -o /dev/null -w "%{http_code}" "http://$1")
    echo "$status"
}

3.3. Función para leer archivo línea a línea (opcional)

procesar_archivo() {
    while IFS= read -r host; do
        procesar_host "$host"
    done < "$1"
}

3.4. Función principal que analiza un host

procesar_host() {
    host="$1"
    log "=== Analizando servidor: $host ==="

    ping_result=$(check_ping "$host")
    dns_result=$(check_dns "$host")
    port_result=$(check_port "$host" 443)
    http_result=$(check_http "$host")

    log "Ping:       $ping_result"
    log "DNS:        $dns_result"
    log "Puerto 443: $port_result"
    log "HTTP:       $http_result"
    log "-----------------------------------"
}

3.5. Lógica principal (main)

main() {
    if [[ "$1" = "-f" ]]; then
        procesar_archivo "$2"
    else
        for host in "$@"; do
            procesar_host "$host"
        done
    fi
}

4. Ejecutar la lógica principal

main "$@"

5. Uso del script

Guardar como:

check_servidor.sh
chmod +x check_servidor.sh

Ejemplos:

1. Pasando varios hosts:

./check_servidor.sh google.com github.com 8.8.8.8

2. Pasando un archivo con hosts:

./check_servidor.sh -f servidores.txt

Ejemplo de servidores.txt:

google.com
github.com
192.168.1.10
srv-interno-01

6. Ejemplo de salida del informe

[2025-02-17 10:55:30] === Analizando servidor: google.com ===
[2025-02-17 10:55:30] Ping:       OK
[2025-02-17 10:55:30] DNS:        OK
[2025-02-17 10:55:30] Puerto 443: ABIERTO
[2025-02-17 10:55:30] HTTP:       200
-----------------------------------

Queda perfecto para enviarlo por correo, guardar en directorios de soporte o integrar en otros scripts.


7. Práctica guiada

Seguir estos pasos:

  1. Crear archivo mis_hosts.txt
  2. Añadir 5 hosts (DNS, IPs…)
  3. Ejecutar el script con -f mis_hosts.txt
  4. Revisar el log generado
  5. Editar el script para añadir más checks
  6. Añadir otro puerto (ej. 22, 80, 8080…)

8. Checklist del Día 7

  • Script modular dividido en funciones
  • Procesa varios hosts
  • Acepa archivo con hosts
  • Hace ping
  • Comprueba DNS
  • Comprueba puertos
  • Comprueba HTTP
  • Usa pipes, redirecciones y códigos de salida
  • Genera un informe
  • Está organizado de forma profesional

Si todo está cumplido…
has completado Bash Script como un auténtico administrador de sistemas.


⭐ Cierre del Mini Tutorial de Bash Script

Has completado un recorrido intensivo por Bash scripting en solo 7 días.
Ahora no solo sabes ejecutar comandos:
sabes automatizarlos como un profesional.

Has aprendido:

  • variables
  • condicionales
  • bucles
  • procesar archivos
  • pasar argumentos
  • redirecciones y pipes
  • funciones
  • modularización real
  • chequeos automáticos de servidores

Desde hoy puedes crear herramientas propias que te ahorren horas, semanas y dolores de cabeza.

Este curso no hace expertos…
pero sí crea técnicos útiles desde el primer día, que es exactamente el espíritu de tus Mini Tutoriales de Emergencia.

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