50 lines
1.6 KiB
Bash
Executable File
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
|