scripts-random/01_bash/speed_web.sh
2024-02-22 21:02:37 +01:00

50 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# Este es un script de Bash para comprobar el código de estado de una lista de URLs
# y utilizando el comando \time mide el tiempo de respuesta de cada solicitud.
#
# Uso:
# chmod +x speed_web.sh
# ./speed_web.sh http://ejemplo.com https://google.com http://otroejemplo.com
#
COLOR_RED='\033[0;31m'
COLOR_BLUE='\033[0;34m'
COLOR_MAGENTA='\033[0;35m'
COLOR_CYAN='\033[0;36m'
COLOR_GRAY='\033[0;37m'
COLOR_RESET='\033[0m'
# Control de salida con Ctrl + C
function ctrl_c() {
echo -e "${COLOR_RED}\n\n[!] Saliendo... \n${COLOR_RESET}"
tput cnorm
exit 1
}
# Ctrl+C
trap ctrl_c SIGINT
check_url() {
url="$1"
echo -e "\n${COLOR_MAGENTA}[+] Comprobación URL:${COLOR_RESET}${COLOR_BLUE} $url${COLOR_RESET}"
# Captura la salida de \time y curl por separado
time_output=$({ /usr/bin/time -f "User mode: %U\nKernel mode: %S\nCPU: %P" curl -o /dev/null -L -s -w "\nCódigo de respuesta: %{http_code}\nTamaño del contenido: %{size_download} bytes\nTipo de contenido: %{content_type}\nDirección IP del servidor: %{remote_ip}\nTiempo de resolución DNS: %{time_namelookup} segundos\n" "$url"; } 2>&1)
if [[ $? -eq 0 ]]; then
echo -e "${COLOR_CYAN}$time_output${COLOR_RESET}"
else
echo -e "${COLOR_RED}\n\n[!] Error: No se pudo acceder a la URL${COLOR_RESET}"
fi
echo -e "${COLOR_CYAN}\n------------------------------------------${COLOR_RESET}"
}
if [ $# -eq 0 ]; then
echo -e "${COLOR_RED}\n\n[!] Error: Introduce argumentos.${COLOR_RESET}"
echo -e "${COLOR_BLUE}\n\tUso: $0 [URL1] [URL2] ...\n${COLOR_RESET}"
exit 1
fi
for url in "$@"; do
check_url "$url"
done