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:
- Crear archivo
mis_hosts.txt - Añadir 5 hosts (DNS, IPs…)
- Ejecutar el script con
-f mis_hosts.txt - Revisar el log generado
- Editar el script para añadir más checks
- 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.
