@victorhckinthefreeworld.com@victorhckinthefreeworld.com

Este script para sistemas GNU/Linux muestra una monitorización de la potencia de la señal WIFI en nuestra terminal Hace unos días el compañero bloguero Jose, en el blog de Tecno Y Soft , compartió un alias para zsh para monitorizar la WiFi en GNU/Linux. Podéis ver el artículo en el siguiente enlace: https://tecnoysoft.com/2026/08/26/monitorizar-la-wi-fi-con-un-alias/ La idea me gustó y decidí probarlo. Pero después de encontrar varios inconvenientes a la hora de funcionar en mi equipo, decidí darle una vuelta al código y a la salida del comando mostrada. Probándolo en mi equipo, el alias o comando presentaba varios problemas: En Tumbleweed el comando iw necesita ser ejecutado como root En su alias se ejecutaba en el dispositivo wlan0 lo que en mi caso no funcionaba, porque no se llama así El comando no funcionaba porque necesitaba unos ; para separar comandos. No sé si en zsh funciona sin eso La salida del comando no terminaba de convencerme. Queremos monitorizar la potencia de la señal WIFI y sin embargo se muestran otros datos de la salida del comando iw , que personalmente no me aportan mucho Así que con estos mimbres quise darle una vuelta al alias y en vez de hacer que fuera un alias de una sola línea, hacerlo un script. Así que con la ayuda de ChatGPT, hemos ido dado forma al script para solucionar todos esos escollos de la propuesta inicial. Detecta (o debiera hacerlo) si el comando iw necesita ser ejecutado como root o no y pide la contraseña en caso afirmativo. Toma el nombre de dispositivo de iw y así puede ser ejecutado en equipos que se llame wlan0 o `wlp2s´ o como sea… La barra muestra colores en función del estado de la señal WiFi y un texto Cabe destacar que cuanto menor el es valor de dBm, mejor es la calidad de la señal y viceversa. Por tanto con eso, este sería el script, que mostraría en la terminal algo similar a la imagen que encabeza este artículo: #!/usr/bin/env bash INTERVAL=1 GREEN='\033[32m' YELLOW='\033[33m' ORANGE='\033[38;5;208m' RED='\033[31m' GRAY='\033[90m' RESET='\033[0m' HIDE_CURSOR='\033[?25l' SHOW_CURSOR='\033[?25h' run_iw() { if iw dev >/dev/null 2>&1; then iw "$@" else sudo iw "$@" fi } cleanup() { printf '%b' "$SHOW_CURSOR" printf '\n' exit 0 } trap cleanup INT TERM EXIT IFACE=$(run_iw dev 2>/dev/null | awk '$1=="Interface"{print $2; exit}') if [[ -z "$IFACE" ]]; then echo "No se encontró ninguna interfaz Wi-Fi." exit 1 fi clear printf '%b' "$HIDE_CURSOR" FIRST_RUN=true while true; do DATA=$(run_iw dev "$IFACE" link 2>/dev/null) if ! grep -q "^Connected to" <<< "$DATA"; then OUTPUT=( "Wi-Fi: Sin conexión" "${GRAY} ────────────────────${RESET}" "" "${GRAY} Interfaz: $IFACE${RESET}" "" "${GRAY} ────────────────────${RESET}" "${GRAY} Ctrl+C para detener el script${RESET}" ) else SSID=$(awk -F': ' '/SSID:/ {print $2; exit}' <<< "$DATA") DB=$(awk '/signal:/ {print $2; exit}' <<< "$DATA") FREQ=$(awk '/freq:/ {print $2; exit}' <<< "$DATA") RX=$(awk '/rx bitrate:/ {print $3; exit}' <<< "$DATA") TX=$(awk '/tx bitrate:/ {print $3; exit}' <<< "$DATA") if (( DB >= -60 )); then COLOR="$GREEN" QUALITY="Excelente" elif (( DB >= -67 )); then COLOR="$GREEN" QUALITY="Buena" elif (( DB >= -75 )); then COLOR="$YELLOW" QUALITY="Aceptable" elif (( DB >= -85 )); then COLOR="$ORANGE" QUALITY="Débil" else COLOR="$RED" QUALITY="Muy débil" fi FILLED=$(( (DB + 90) * 20 / 50 )) (( FILLED > 20 )) && FILLED=20 (( FILLED < 0 )) && FILLED=0 BAR="" for ((i=0; i<FILLED; i++)); do BAR+="█" done for ((i=FILLED; i<20; i++)); do BAR+="░" done OUTPUT=( "Wi-Fi: $SSID" " ────────────────────" " ${COLOR}${BAR}${RESET}" " Señal: ${DB} dBm · ${QUALITY}" " Frecuencia: ${FREQ} MHz" " RX: ${RX} Mbit/s" " TX: ${TX} Mbit/s" " ────────────────────" "${GRAY} Ctrl+C para detener el script${RESET}" ) fi if [[ "$FIRST_RUN" == true ]]; then printf '%b\n' "${OUTPUT[@]}" FIRST_RUN=false else printf '\033[H' for line in "${OUTPUT[@]}"; do printf '\033[2K%b\n' "$line" done fi sleep "$INTERVAL" done Copia el código en un tu equipo en un archivo que puedes llamar por ejemplo wifi-monitor y dale permisos de ejecución con el consabido comando chmod +x wifi-monitor y lo puedes ejecutar mediante ./wifi-monitor y ver el resultado. Lo puedes meter en alguno de los directorios de tu $PATH y lo podrás ejecutar desde cualquier ubicación en tu terminal. Gracias a Jose y su blog Tecno y Soft por la idea inicial de su alias para sus pruebas personales por inspirar esta pequeña herramienta. Si lo pruebas, me gustará saber si te funcionó y si te resulta interesante…

zorro

@victorhckinthefreeworld.com@victorhckinthefreeworld.com Va va, me gusta, pero por que no poner el script en algún lugarsillo, siento que en el mensaje se puede confundir, y perder algubos saltos de linea importantes, en un pad o algo podría ser tambien, no necesariamente en un repo de git, pero igual y si también jejejeje