From 9aa309205e681436a9e0a059482a91e91a5e9673 Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Tue, 21 Oct 2025 23:39:37 +0200 Subject: [PATCH] Add ping_loop.sh --- 01_bash/ping_loop.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 01_bash/ping_loop.sh diff --git a/01_bash/ping_loop.sh b/01_bash/ping_loop.sh new file mode 100644 index 0000000..28aecbd --- /dev/null +++ b/01_bash/ping_loop.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# ======================= # +# 🎯 Colores personalizados +# ======================= # +RED='\033[1;91m' +GREEN='\033[1;92m' +CYAN='\033[1;96m' +YELLOW='\033[1;93m' +MAGENTA='\033[1;95m' +BOLD='\033[1m' +NC='\033[0m' # Sin color + +# ======================= # +# 👋 Función al salir +# ======================= # +function despedida() { + echo -e "\n${MAGENTA}${BOLD}👋 Gracias por usar el script. ¡Hasta luego!${NC}" + exit 0 +} + +# Capturar Ctrl + C +trap despedida SIGINT + +# ======================= # +# 🖥️ Título del script +# ======================= # +echo -e "${CYAN}${BOLD}==============================" +echo -e " PING LOOP SCRIPT" +echo -e "==============================${NC}" + +# ======================= # +# 🔧 Solicitar parámetros +# ======================= # +read -p "$(echo -e "${YELLOW}${BOLD}🌐 Introduce la web o IP a hacer ping: ${NC}")" destino +read -p "$(echo -e "${YELLOW}${BOLD}⏱️ Intervalo entre intentos fallidos (en segundos): ${NC}")" intervalo + +# ======================= # +# 🔁 Bucle de ping +# ======================= # +contador=0 + +while true; do + ((contador++)) + timestamp=$(date '+%Y-%m-%d %H:%M:%S') + salida_ping=$(ping -c1 -W1 -w5 "$destino" 2>&1) + + if echo "$salida_ping" | grep -q 'time='; then + rtt=$(echo "$salida_ping" | sed -n 's/.*time=\([0-9.]* ms\).*/\1/p') + echo -e "${GREEN}${BOLD}[✓] Intento $contador - $timestamp - Respuesta de $destino: $rtt${NC}" + break + else + echo -e "${RED}${BOLD}[✗] Intento $contador - $timestamp - Sin respuesta de $destino${NC}" + sleep "$intervalo" + fi +done + +# Mensaje final (en caso de salir por éxito) +despedida