From 1cc828ec3d0f4ff0fd2f1a630521a18c10f6ceaf Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Sun, 25 Feb 2024 22:40:37 +0100 Subject: [PATCH] Update pruebaRed.sh --- 01_bash/pruebaRed.sh | 67 ++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 37 deletions(-) diff --git a/01_bash/pruebaRed.sh b/01_bash/pruebaRed.sh index ceeca8d..eed0e21 100755 --- a/01_bash/pruebaRed.sh +++ b/01_bash/pruebaRed.sh @@ -10,8 +10,7 @@ COLOR_RESET='\e[0m' # Control de salida con Ctrl + C function ctrl_c() { echo -e "${COLOR_RED}\n\n[!] Saliendo... \n${COLOR_RESET}" - tput cnorm - exit 1 + tput cnorm; exit 1 } # Ctrl+C @@ -22,14 +21,14 @@ function print_title { local title="$1" local title_length=${#title} local total_length=22 - + # Calcular el tamaño del margen izquierdo y derecho - local margin_length=$(((total_length - title_length - 4) / 2)) - + local margin_length=$(( (total_length - title_length - 4) / 2 )) + # Asegurarse de que el número total de almohadillas sea siempre 22 - local left_padding=$((margin_length)) - local right_padding=$((margin_length + (title_length % 2))) - + local left_padding=$(( margin_length )) + local right_padding=$(( margin_length + (title_length % 2) )) + echo -e "${COLOR_BLUE}\n$(printf '#%.0s' $(seq 1 $left_padding))#### $title ####$(printf '#%.0s' $(seq 1 $right_padding))\n${COLOR_RESET}" } @@ -38,7 +37,7 @@ print_network_info() { local interface=$1 local ip_lan_4=$(ip addr show "$interface" | grep 'inet ' | awk '{print $2}') local ip_lan_6=$(ip addr show "$interface" | grep 'inet6' | awk '{print $2}') - + if [ -z "$ip_lan_4" ] && [ -z "$ip_lan_6" ]; then printf "${COLOR_BLUE}|${COLOR_RESET}${COLOR_YELLOW} %-16s ${COLOR_RESET}${COLOR_BLUE}|${COLOR_RESET} ${COLOR_RED}%-35s ${COLOR_RESET}${COLOR_BLUE}|${COLOR_RESET}\n" "$interface" "No tiene" else @@ -64,10 +63,7 @@ print_network_table() { # Comprobación de dependencias check_dependencies() { for cmd in "jq" "nordvpn" "speedtest"; do - command -v "$cmd" >/dev/null 2>&1 || { - echo >&2 "${COLOR_RED}$cmd no está instalado. Instálalo con 'sudo apt-get install $cmd'${COLOR_RESET}" - exit 1 - } + command -v "$cmd" >/dev/null 2>&1 || { echo >&2 "${COLOR_RED}$cmd no está instalado. Instálalo con 'sudo apt-get install $cmd'${COLOR_RESET}"; exit 1; } done } @@ -83,17 +79,17 @@ network_info=() # Comprobar conexión check_connection() { print_title "COMPROBAR CONEXIÓN" - if ping -c 1 -W 2 8.8.8.8 >/dev/null 2>&1; then + if ping -c 1 -W 2 8.8.8.8 > /dev/null 2>&1; then echo -e "\t${COLOR_GREEN}Conexión exitosa con 8.8.8.8${COLOR_RESET}" else echo -e "\t${COLOR_RED}Error de conexión con 8.8.8.8${COLOR_RESET}" - + # Obtener la interfaz predeterminada default_interface=$(ip route show default | awk '/default/ {print $5}') - + # Probar la conexión con el router router_ip=$(get_router_ip "$default_interface") - if ping -c 1 -W 2 "$router_ip" >/dev/null 2>&1; then + if ping -c 1 -W 2 "$router_ip" > /dev/null 2>&1; then echo -e "\t${COLOR_GREEN}Conexión exitosa con el router ($router_ip)${COLOR_RESET}" else echo -e "\t${COLOR_RED}Error de conexión con el router ($router_ip)${COLOR_RESET}" @@ -127,6 +123,7 @@ check_websites() { done } + # Obtener las interfaces de red get_interfaces() { print_title "TARJETAS DE RED" @@ -140,7 +137,7 @@ get_interfaces() { # Obtener IP pública get_public_ip_info() { print_title "INFO IP WAN" - curl -s https://ipinfo.io | jq -r 'to_entries[] | "\u001b[34m\(.key):\u001b[0m \u001b[32m\(.value)\u001b[0m"' + curl -s https://ipinfo.io | jq -r 'to_entries[] | select(.key != "readme") | "\u001b[34m\(.key):\u001b[0m \u001b[32m\(.value)\u001b[0m"' } # Estado de nordvpn @@ -151,8 +148,8 @@ nordvpn_status() { # Nueva conexión nordvpn nordvpn_connect() { - print_title "CONECTANDO NORDVPN" - nordvpn connect Spain Barcelona + print_title "CONECTANDO NORDVPN" + nordvpn connect Spain Barcelona } # Test de velocidad @@ -162,7 +159,7 @@ speed_test() { } # Realizar traceroute -traceroute() { +traceroute(){ print_title "TRACEROUTE" mtr -c 3 -n -r 8.8.8.8 } @@ -177,26 +174,22 @@ main_menu() { echo "4 - Información de IP pública" echo "5 - Estado de NordVPN" echo "6 - Conectar Nordvpn" - echo "7 - Test de velocidad" + echo "7 - Test de velocidad" echo "8 - Traceroute" echo "9 - Salir" - + read -p "Ingrese el número de la opción deseada: " choice case $choice in - 1) check_connection ;; - 2) check_websites ;; - 3) get_interfaces ;; - 4) get_public_ip_info ;; - 5) nordvpn_status ;; - 6) nordvpn_connect ;; - 7) speed_test ;; - 8) traceroute ;; - 9) - echo -e "${COLOR_RED}\nSaliendo...\n${COLOR_RESET}" - tput cnorm - exit 0 - ;; - *) echo -e "${COLOR_RED}\nOpción inválida. Inténtelo de nuevo.${COLOR_RESET}" ;; + 1) check_connection ;; + 2) check_websites ;; + 3) get_interfaces ;; + 4) get_public_ip_info ;; + 5) nordvpn_status ;; + 6) nordvpn_connect ;; + 7) speed_test ;; + 8) traceroute ;; + 9) echo -e "${COLOR_RED}\nSaliendo...\n${COLOR_RESET}"; tput cnorm; exit 0 ;; + *) echo -e "${COLOR_RED}\nOpción inválida. Inténtelo de nuevo.${COLOR_RESET}" ;; esac done }