
Kit de herramientas de red unificado para Linux — Python 3 + PySide6
# NMLinux · v1.7.14 [](https://github.com/thongor77/nmlinux/releases/latest) [](https://www.python.org/) [](LICENSE) [](#installation) [](#features) [](https://www.paypal.com/donate/?business=JFQGY7NU3ANCN&no_recurring=0&item_name=Every+donation%2C+no+matter+how+small%2C+helps+me+keep+this+project+alive.+Thank+you%21%0A¤cy_code=EUR) [](#support-the-project) **Un conjunto de herramientas de red unificado para Linux y macOS — inspecciona, conecta, diagnostica.** NMLinux es una única interfaz gráfica unificada que reúne 29 módulos de red en una sola ventana: monitorización de interfaces, Wi-Fi, DNS, terminal SSH, visor de cortafuegos, mapa de topología, traceroute y más. Construido desde cero en Python y PySide6 (Qt 6), con 8 idiomas de interfaz y sin dependencias externas más allá de las herramientas estándar del sistema. > [!NOTE] > **NMLinux no está relacionado con el demonio del sistema Linux `/usr/bin/NetworkManager` (NetworkManager de Red Hat/GNOME).** NMLinux es un proyecto independiente construido desde cero en Python y PySide6. > Construido con [Claude Code](https://claude.ai/code) (Anthropic) y la contribución de su autor. --- ## Proceso de desarrollo NMLinux se construye con asistencia de IA — [Claude Code](https://claude.ai/code), concretamente — y eso no se oculta en ningún lugar de este repositorio. Casi todos los proyectos de software serios hoy en día usan IA en algún punto de su flujo de trabajo, lo digan o no. Así que "¿hubo IA involucrada?" no es la pregunta interesante. La pregunta interesante es: ¿hay algo que lo detecte cuando la IA se equivoca? Esto es lo que lo hace, si prefieres comprobarlo en lugar de creerme: - **162 tests** — `pytest tests/ -v`. Lógica pura más un puñado de tests reales de widgets Qt (menús, tablas), sin simular las partes interesantes. - **[`docs/Decisions-Techniques.md`](https://github.com/thongor77/nmlinux/blob/main/docs/Decisions-Techniques.md)** — cada decisión técnica no obvia, las alternativas que se descartaron y los errores (incluidos los introducidos por IA) que se encontraron y corrigieron, con el razonamiento documentado. - **[`docs/Architecture.md`](https://github.com/thongor77/nmlinux/blob/main/docs/Architecture.md)** y **[`docs/Carte-des-Modules.md`](https://github.com/thongor77/nmlinux/blob/main/docs/Carte-des-Modules.md)** — la estructura real del código, mantenida en sincronía con lo que se publica. - Una **comprobación de consistencia i18n** ejecutada antes de cada publicación para detectar claves de traducción faltantes en los 8 idiomas soportados. Nada de eso existe porque no se pueda confiar en la IA. Existe porque nada debería publicarse sin un proceso que lo verifique — incluido el código escrito a mano. Juzga el resultado y cómo se verifica, no la herramienta que ayudó a escribirlo. ¿Encontraste un error de todas formas? Eso es útil, no vergonzoso — [abre una incidencia](https://github.com/thongor77/nmlinux/issues). --- ## Comunidad **[GitHub Discussions](https://github.com/thongor77/nmlinux/discussions) está abierto** — comparte comentarios, reporta ideas, haz preguntas o simplemente saluda. El autor tiene más de 30 años de experiencia en infraestructura y operaciones, y construyó esta herramienta porque también debería existir software bueno, gratuito y sencillo para Linux. --- ## Capturas de pantalla > Capturas de Linux de la v1.2.7 — capturas de macOS de la v1.3.5. La aplicación ahora tiene 29 módulos y 8 idiomas de interfaz (FR/EN/ES/DE/IT/PT/JA/ZH). **Linux (KDE)** | Panel | Topología | |-----------|----------| |  |  | | Traceroute | Wi-Fi | |------------|-------| |  |  | **macOS** | Panel | Traceroute | |-----------|------------| |  |  | --- ## Registro de cambios ### v1.7.14 — 2026-09-30 - **AppImage — corrección del fallo al iniciar, intento 2**: la corrección de la v1.7.13 (eliminar las bibliotecas del sistema incluidas) no fue suficiente — el propio intérprete de Python embebido (`libpython3.14.so.1.0`, compilado contra la glibc 2.44 de la máquina de desarrollo con Arch Linux) seguía requiriendo símbolos de glibc más recientes que los que tiene la máquina de pruebas del catálogo de AppImageHub (Ubuntu 22.04, glibc 2.35), por lo que el AppImage seguía fallando justo al arrancar. `build-appimage.sh` ahora construye el paquete de PyInstaller dentro de un contenedor `ubuntu:22.04` (mediante `podman`) en lugar de en el host, de modo que cada binario embebido se enlaza exactamente contra la versión de glibc que el AppImage necesita soportar. ### v1.7.13 — 2026-09-30 - **AppImage — corrección del fallo al iniciar (incompleta, ver v1.7.14)**: `build-appimage.sh` estaba incluyendo bibliotecas compartidas (`libz.so.1`, `libstdc++.so.6`, `libX11.so.6`, `libfontconfig.so.1` y otras) directamente desde la glibc muy reciente de la máquina de compilación con Arch Linux. En distribuciones más antiguas el AppImage fallaba inmediatamente al arrancar (`GLIBC_ABI_DT_RELR' not found`), detectado por la prueba automatizada del catálogo de AppImageHub. Estas bibliotecas ahora se eliminan del paquete para que el AppImage recurra a las copias propias del sistema anfitrión, que es el enfoque estándar para los AppImage. ### v1.7.12 — 2026-08-12 - **Traceroute — corrección**: bajo Flatpak (v1.7.11, ver más abajo — ahora eliminado), `traceroute` siempre se resolvía en el `PATH` a través del shim del host incluso cuando el host no tenía instalado un binario `traceroute` real, por lo que el worker nunca recurría a `tracepath` y el trazado terminaba al instante sin saltos y sin mostrar ningún error. Ahora recurre a `tracepath` siempre que `traceroute` no produzca ninguna salida analizable, independientemente de *por qué* falló. - **Terminal SSH — corrección de askpass**: cuando `DISPLAY`/`WAYLAND_DISPLAY` están definidos (cualquier sesión gráfica) y ssh no tiene una tty limpia, puede intentar usar `$SSH_ASKPASS` para el prompt de contraseña en lugar del terminal embebido — fallando silenciosamente la autenticación si no hay instalado ningún asistente askpass. `SSH_ASKPASS_REQUIRE=never` ahora fuerza a que los prompts de contraseña pasen siempre por el propio terminal. - **Empaquetado Flatpak eliminado**: el manifiesto local de KDE Linux incluido en la v1.7.11 queda descontinuado. Investigar el error del prompt de contraseña de SSH anterior reveló una limitación a nivel de kernel: un proceso retransmitido mediante `flatpak-spawn --host` nunca puede convertirse en el propietario del terminal de control del pty reenviado (`TIOCSCTTY` rechazado con `EPERM` — otra sesión distinta y no relacionada ya lo posee; esto es una frontera de seguridad intencional del kernel, no un error). El único workaround que funcionaba (`script`, asignando un pty nuevo) corrige el prompt de contraseña pero rompe la propagación del redimensionado del terminal en vivo para esa sesión — juzgado como un peor compromiso que no publicar Flatpak en absoluto. AUR y el AppImage son las rutas de instalación soportadas en Linux de ahora en adelante. ### v1.7.11 — 2026-08-03 - **Empaquetado Flatpak (KDE Linux)**: un manifiesto de compilación local bajo `packaging/flatpak/` apunta a KDE Linux y otras distribuciones solo-Flatpak. Las herramientas CLI del host a las que nmlinux invoca (`nmcli`, `pkexec`, `mount.cifs`, `ssh`, `nmap`, …) se puentean mediante shims de `flatpak-spawn --host` en el `PATH` en lugar de aislar cada una individualmente; PySide6 proviene del `io.qt.PySide.BaseApp` de Flathub en lugar del wheel de PyPI. No publicado en Flathub — en su lugar se construye un único paquete `.flatpak` con `packaging/flatpak/build-bundle.sh` y se adjunta a cada publicación, de la misma forma que ya se hace con el AppImage. **Descontinuado en la v1.7.12 — ver más arriba.** ### v1.7.10 — 2026-08-03 - **Terminal SSH — corrección**: se corrigió una condición de carrera por la que el PTY podía iniciarse con el tamaño incorrecto (por defecto 24×80) si el tamaño real del widget del terminal aún no se conocía cuando se lanzaba la sesión, descartando silenciosamente la solicitud de redimensionado. Esto desincronizaba las aplicaciones remotas a pantalla completa (p. ej. Claude Code CLI, htop, vim) del tamaño real de la ventana, provocando texto obsoleto/residual en la parte inferior de la pantalla que solo se limpiaba a medida que el nuevo texto se desplazaba por encima. Reportado por el usuario; reproducido con una sesión interactiva real ### v1.7.9 — 2026-08-02 - **Terminal SSH — copiar/pegar**: selecciona texto con el ratón (clic y arrastrar, resaltado), copia con `Ctrl+Shift+C` o el menú contextual; pega con `Ctrl+Shift+V` (ya existente). Copiar era antes imposible — no existía ninguna selección de texto - **Terminal SSH — múltiples sesiones simultáneas**: la página SSH ahora abre cada conexión en su propia pestaña en lugar de una única sesión compartida. Reconectar a una conexión guardada — incluso a la misma dos veces — solía matar la sesión activa sin abrir un reemplazo funcional; ahora cada acción de conexión abre una pestaña nueva e independiente ### v1.7.8 — 2026-07-14 - **Speed Test — nueva pestaña LAN (iperf3)**: junto al test de velocidad de internet existente, una nueva pestaña ejecuta pruebas `iperf3` solo como cliente contra una lista de servidores públicos incluida (26 países) o contra un servidor personalizado guardado (p. ej. un servidor interno de la organización). Soporta TCP/UDP, IPv4/IPv6/auto y dirección inversa (descarga), con jitter/pérdida mostrados para las pruebas UDP. Sugerido en la [incidencia #6](https://github.com/thongor77/nmlinux/issues/6) - **Nueva dependencia opcional**: `iperf3` — instálala para habilitar la pestaña LAN; en caso contrario la pestaña muestra un aviso y permanece deshabilitada ### v1.7.6 — 2026-07-05 - **Inventario de activos — actualización con clic derecho**: haz clic derecho sobre una o varias filas ya escaneadas (se admite selección múltiple) y elige "Actualizar seleccionados" para reescanear solo esos hosts en su sitio, en lugar de volver a ejecutar un escaneo completo de la red - **Inventario de activos — retroalimentación de fallo de autenticación SSH**: un inicio de sesión SSH rechazado ahora muestra "SSH auth failed" en lugar de fallar silenciosamente, sin perder la línea base de nombre de host/SO detectada por Nmap — confirmado contra un NAS Synology real donde el Auto Block de DSM rechazó una contraseña correcta tras probar primero otros conjuntos de credenciales configurados ### v1.7.5 — 2026-07-04 - **Monitor de Ping — directorio de objetivos guardados**: un nuevo panel a la izquierda permite guardar objetivos de ping (nombre, host, intervalo) en una lista persistente, de modo que los hosts monitorizados sobreviven a un reinicio de la aplicación en lugar de tener que volver a escribirlos. Un botón ★ en cada fila monitorizada activamente guarda ese host en el directorio en cualquier momento de la sesión — sin necesidad de haberlo planificado antes de que la aplicación se cierre inesperadamente - **Monitor de Ping — "Iniciar monitorización"**: selecciona un objetivo guardado e inicia su monitorización con un clic, reutilizando su intervalo guardado ### v1.7.4 — 2026-07-04 - **Inventario de activos — corregidos resultados de escaneo inconsistentes**: la comprobación de actividad enviaba un único ping con tiempo de espera de 1 segundo y sin reintento, lo que podía descartar un dispositivo real bajo la propia carga concurrente del escáner (hasta 40 hosts sondeados a la vez) o cuando un host Wi-Fi estaba brevemente dormido entre balizas — confirmado en vivo contra una subred real que devolvía recuentos de dispositivos distintos en ejecuciones repetidas del mismo rango. La comprobación ahora reintenta el ping antes de recurrir a la sonda de puerto TCP - **Inventario de activos — nuevo botón "Actualizar vacíos"**: tras un escaneo, reescanea solo las IPs que no devolvieron datos en lugar de todo el rango de nuevo; los hosts recién encontrados se fusionan con los resultados existentes ### v1.7.3 — 2026-07-03 - **SMB — montar recursos compartidos desde el menú contextual**: haz clic derecho sobre un recurso compartido en la pestaña SMB y elige Montar/Desmontar para montarlo en una ruta local estable (`~/mnt/<host>_<share>`), utilizable desde el terminal y cualquier otra aplicación — no es una vista de navegación transitoria. Solo para la sesión (sin persistencia en fstab/systemd), credenciales reutilizadas de los campos de usuario/contraseña existentes. Linux usa `pkexec mount -t cifs` con un archivo de credenciales con permisos restringidos (nunca expuesto vía `ps`); macOS usa `mount_smbfs` directamente. Reintenta automáticamente con un dialecto SMB más antiguo (`vers=2.0`) cuando un servidor rechaza la negociación por defecto (habitual con unidades NAS antiguas) — ambos intentos ocurren bajo un único prompt de autenticación mediante un proceso auxiliar dedicado - **Nueva dependencia opcional**: `cifs-utils` (Linux) para el montaje SMB; integrado en macOS ### v1.7.2 — 2026-07-03 - **Instalación en macOS — corregidos dos errores de arranque encontrados en un Mac limpio**: `bootstrap_macos.sh` ya no fuerza `NONINTERACTIVE=1` en el instalador de Homebrew, que abortaba inmediatamente en cualquier cuenta de administrador nueva en lugar de solicitar la contraseña de sudo; el one-liner documentado ahora descarga primero el script en lugar de canalizarlo directamente a `bash`, ya que los pasos interactivos anidados (instalador de Xcode CLT, el propio prompt de sudo de Homebrew) podían interferir con el propio flujo de entrada del script externo al canalizarlo - **Menú contextual universal — SMB añadido**: `SmbNfsPage` era la única página de destino ausente del sistema de clic derecho entre módulos publicado en la v1.7.0; hacer clic derecho sobre un host y elegir SMB ahora rellena previamente el campo de host y lanza el escaneo inmediatamente, en negrita en el menú cuando se detecta el puerto 445 abierto - **i18n — traducidas las cadenas restantes del Panel**: la etiqueta de latencia de la puerta de enlace, el título de la tarjeta TLS Watchlist y su fila de estado seguían codificados en francés; ahora traducidos en los 8 idiomas de interfaz ### v1.7.1 — 2026-07-02 - **macOS 26 (Tahoe)** — correcciones del SSID Wi-Fi: se cambió de `system_profiler` (devuelve `<redacted>` sin Servicios de Localización) a **CoreWLAN** como fuente de datos principal; la aplicación ahora solicita permiso de Servicios de Localización en el primer arranque; la página Wi-Fi muestra todas las redes con nombres reales una vez concedido - **macOS** — Gestor de conexiones: el SSID conectado ahora se lee vía CoreWLAN, con `system_profiler` para el modo de seguridad - **macOS** — SMB: mensaje claro de "autenticación requerida" cuando el NAS requiere credenciales; corregido el aviso espurio de smb.conf de smbclient de Homebrew - **macOS** — Corregido un posible fallo al salir tras el primer diálogo de permiso de Servicios de Localización ### v1.7.0 — 2026-07-02 - **Menú contextual universal con clic derecho** en cada tabla que contiene IPs o nombres de host — navega directamente entre módulos sin copiar y pegar: haz clic derecho sobre cualquier host descubierto y elige Ping, Escanear puertos, Whois, DNS, Traceroute, MTR, SSH, RDP, VNC, Ver en Topología o Añadir al Inventario. Los elementos del menú SSH/RDP/VNC aparecen en **negrita** cuando se detecta abierto el puerto correspondiente. Las etiquetas están totalmente traducidas en los 8 idiomas de interfaz. - **Páginas de origen** (emiten acciones de clic derecho): Escáner de IP, Nmap, Ping, Escáner de puertos, Traceroute, MTR, Topología (clic derecho en nodo) - **Páginas de destino** (reciben el host y lo rellenan previamente): Whois (`set_target` + consulta automática), DNS (solo relleno previo con `set_target`), Ping (`set_target` + inicio automático), Traceroute (`set_target` + inicio automático), MTR (`set_target` + inicio automático), Escáner de puertos (`set_target` + foco), SSH / RDP / VNC (`set_target` abre el formulario de nueva conexión rellenado previamente), Topología (`load_hosts` inyecta nodos del escaneo de Escáner de IP/Nmap sin reescanear — puerta de enlace detectada automáticamente, aristas dibujadas, nodo de origen resaltado en rojo), Inventario de activos (`prefill_hosts` inicia el escaneo de credenciales directamente sobre los hosts descubiertos, omitiendo la fase de descubrimiento ICMP) - **Panel — gráfico de ping de la puerta de enlace**: minigráfico de latencia en vivo actualizado cada 2 segundos; codificado por colores (<20 ms verde / 20–100 ms naranja / >100 ms rojo / tiempo de espera rojo) - **Panel — resumen de TLS Watchlist**: la tarjeta de estado en el Panel refleja automáticamente el estado de TLS Watchlist (OK / por expirar / alerta) sin volver a consultar - **Panel — redimensionado del mapa geográfico**: el mapa mundial ahora se expande horizontalmente cuando se redimensiona la ventana ### v1.6.4 — 2026-06-28 - **macOS**: la barra de menú ahora muestra **NMLinux** en lugar de **Python** — causa raíz: tras `exec()` a Python, `NSBundle.mainBundle()` se resuelve al bundle `Python.framework` (CFBundleName = "Python") que Qt lee durante la construcción de QApplication; corregido parcheando el `infoDictionary()` del bundle y renombrando los elementos de menú nativos vía AppKit antes de que se cree el menú de la aplicación ### v1.6.3 — 2026-06-28 - **macOS**: primer intento de corregir la barra de menú usando `NSProcessInfo.setProcessName_` vía `pyobjc-framework-Cocoa` (sustituido por la v1.6.4) ### v1.6.2 — 2026-06-28 - **macOS**: se reemplazó el script lanzador de bash por un stub en C compilado en `install_macos_app.sh` para que macOS asocie correctamente el bundle `.app` con el proceso en ejecución; se añadieron `setprogname` y la sobrescritura de `sys.argv[0]` como alternativas ### v1.6.1 — 2026-06-25 - **Terminal SSH — corregido el eco remoto**: las pulsaciones de teclas escritas en el terminal SSH embebido se enviaban al shell remoto pero nunca se devolvían como eco (el teclado parecía "muerto" tras iniciar sesión). nmlinux forzaba la desactivación del eco del PTY local, y ssh propagaba ese "sin eco" al pty remoto a través de sus modos de terminal (pty-req), por lo que el shell remoto dejaba de hacer eco de la entrada. Reproducido en una VM Ubuntu 26.04 limpia (OpenSSH reciente aplica estos modos fielmente). El terminal ahora mantiene el PTY en modo normal y deja que ssh gestione el eco, igual que los emuladores de terminal reales. ### v1.6.0 — 2026-06-24 - **Inventario de activos — WinRM Windows (completo)**: detección de host mediante sonda de puerto TCP cuando ICMP está bloqueado por el Firewall de Windows; PowerShell ahora usa ruta absoluta completa + **EncodedCommand (base64)** para evitar que cmd.exe interprete las tuberías `|`; cadena de respaldo completa sin derechos de administrador: SO vía `ver`, CPU vía registro, RAM vía `systeminfo`, disco vía `wmic` → `fsutil` (consciente de la configuración regional EN coma / FR espacio) → `dir /-C` - **Inventario de activos — SSH con múltiples credenciales**: se admiten múltiples conjuntos de credenciales SSH; corregido el disco en macOS (`/System/Volumes/Data`), respaldo de CPU para Apple Silicon (`hw.model`), Synology (`/volume1`), Unraid (`/mnt/user`) - **Correcciones de errores**: los errores de WinRM ahora se muestran en la tabla en lugar de un respaldo silencioso; la detección de host WinRM/SNMP ya no se bloquea por la presencia de credenciales SSH; corregido el tiempo de espera de pywinrm ### v1.5.3 — 2026-06-24 - **macOS .app — detección de herramientas de Homebrew**: `sshpass`, `nmap` y `snmpget` instalados vía Homebrew ahora se encuentran y se invocan usando su ruta absoluta; los bundles `.app` en macOS no heredan el PATH de Homebrew (`/opt/homebrew/bin`, `/usr/local/bin`), por lo que las herramientas previamente instaladas se ignoraban silenciosamente - **Ruta de actualización en macOS**: ejecutar `git pull && bash packaging/install_macos_app.sh` desde la raíz del repositorio es ahora el método de actualización documentado; el script gestiona su propio venv (`~/.local/share/nmlinux/venv`) y no requiere `pip` ni `pipx` a nivel de sistema ### v1.5.2 — 2026-06-24 - **Inventario de activos** — nuevo módulo (el 29.º); escanea un rango CIDR y recopila SO, CPU, RAM, disco y tiempo de actividad de cada host vía SSH, WinRM, SNMP o Nmap; admite múltiples conjuntos de credenciales por protocolo (prueba cada uno en orden); política de retención cero: las credenciales nunca se escriben en disco, se borran de la memoria tras el escaneo; exporta resultados como JSON, CSV o Markdown; mapa geográfico animado añadido a la sección de Geolocalización de IP del Panel - **Correcciones en la recopilación por SSH**: corregido error de comillas en awk del comando de disco; `free -h` reemplazado por `free` compatible con BusyBox; la ruta de código de macOS ahora usa `sw_vers` para el nombre del SO, respaldo `hw.model` para la CPU de Apple Silicon, `/System/Volumes/Data` para el volumen de datos de usuario APFS; volúmenes Synology/Unraid (`/volume1`, `/mnt/user`) detectados antes que la raíz; corregido el patrón de falso éxito `df | tail -1 || …` con guardas `test -d`; salida de `lsb_release` sin las comillas circundantes; se admiten múltiples conjuntos de credenciales SSH/WinRM (prueba cada uno en orden por host) ### v1.5.0 — 2026-06-17 - **Servidor de transferencia de archivos** — nuevo módulo para iniciar/detener un servidor TFTP o HTTP ligero directamente desde la aplicación; caso de uso clásico: copia de seguridad y restauración de configuraciones de routers, switches o impresoras; un servidor activo a la vez (TFTP o HTTP), puerto y directorio raíz configurables, IPs locales mostradas como botones de copiar al portapapeles; HTTP incluye listado de directorios (navegable desde cualquier navegador de la LAN), GET (descarga) y POST/PUT (subida); TFTP soporta GET y PUT (bidireccional), el puerto 69 requiere root — la aplicación muestra un botón "Iniciar como root (pkexec)" ante error de permisos; tabla de registro de transferencias en vivo (marca de tiempo, nombre de archivo, IP del cliente, dirección ↑/↓, tamaño); protección contra travesía de puertos; 8 idiomas de interfaz; nueva dependencia: `tftpy` ### v1.4.3 — 2026-06-14- **Correcciones de la lista de vigilancia TLS**: los certificados autofirmados y no confiables ahora se muestran correctamente como "⚠ Certificado no válido / no confiable" (naranja) en lugar de verde; la captura de excepciones SSL se amplió para cubrir todas las subclases de `ssl.SSLError`; las entradas ahora muestran "… (comprobando)" mientras se ejecuta la comprobación en segundo plano y "— (inaccesible)" cuando no se puede alcanzar el host ### v1.4.2 — 2026-06-14 - **Lista de vigilancia TLS** — lista persistente de nombres de host para monitorizar la caducidad de certificados; añade hosts con `+ Watch` (usa el host/puerto actual) o manualmente en el panel; la comprobación en segundo plano se ejecuta automáticamente 2 segundos después del inicio; la entrada "TLS Inspector" de la barra lateral muestra un punto de color: rojo si algún certificado ha caducado, naranja si algún certificado caduca en menos de 30 días; botón de reverificación en el panel; la lista muestra el estado por entrada (✓ / ⚠ / EXPIRED) con código de colores ### v1.4.1 — 2026-06-14 - **macOS — IP Scanner**: corregida la búsqueda de dirección MAC, fabricante e interfaz en macOS; `_arp_entry()` ahora llama a `arp -n <ip>` en macOS y analiza su formato de salida (`? (IP) at AA:BB:CC on en0`) en lugar de leer `/proc/net/arp` (solo Linux); las cuatro columnas del escáner ahora se rellenan correctamente en macOS - **Ayuda de VNC**: añadida una nota en los 8 idiomas aclarando que Linux no tiene servidor VNC por defecto y enumerando las opciones comunes para instalarlo (x11vnc, tigervnc-server, wayvnc) ### v1.4.0 — 2026-06-14 - **macOS — IP Scanner**: reemplazado `getent` (solo Linux) por `socket.gethostbyaddr()` de Python para la resolución DNS inversa multiplataforma; la búsqueda de nombre de host ahora funciona de forma nativa en macOS sin ninguna herramienta adicional - **macOS — SMB Browser**: cambiado de `smbclient` (requiere samba de Homebrew) a `smbutil view` (herramienta integrada en macOS); el listado de recursos compartidos SMB ahora funciona en macOS sin ninguna instalación - **macOS — NFS Browser**: `showmount` está integrado en macOS pero no admite `--no-headers`; se eliminó el flag en macOS y se omite la línea de cabecera en el analizador; el listado de exportaciones NFS ahora funciona de forma nativa - **macOS — RDP**: cuando no se encuentra `xfreerdp`, recurre al esquema de URL `open rdp://`; abre Microsoft Remote Desktop (App Store) si está instalado, con host, puerto, usuario y dominio prerrellenados - **macOS — VNC**: cuando no se encuentra `vncviewer`, recurre al esquema de URL `open vnc://`; abre Compartir pantalla de macOS (integrado, sin instalación) ### v1.3.9 — 2026-06-13 - **Reenvío del agente SSH** — nueva casilla "Agent forwarding" en el formulario de conexión SSH; añade `-A` al comando `ssh`; permite saltar entre servidores sin copiar tu clave privada (PC → A → B); requiere un agente SSH activo (`SSH_AUTH_SOCK`); ayuda contextual actualizada en los 8 idiomas ### v1.3.8 — 2026-06-13 - **Paleta de comandos (Ctrl+P)** — navegación instantánea por teclado a cualquiera de los 27 módulos; búsqueda difusa por nombre y palabras clave (p. ej. "firewall", "tls", "ssh key", "scan"); flechas Arriba/Abajo + Enter o un solo clic para navegar; se abre con Ctrl+P desde cualquier lugar de la aplicación - **Gestor de exportación** — exporta una instantánea completa de la red (interfaces, rutas, resolutores DNS) desde Archivo → Exportar informe de red… en JSON, Markdown, texto plano o PDF (opcional: `pip install reportlab`) - **Botones de exportación a nivel de módulo** — botones de exportación añadidos a las páginas Interfaces, DNS, Firewall, SSH Connections y Connection Manager; cada página exporta sus datos actuales en el formato elegido con actualización en vivo de la extensión del nombre de archivo cuando cambia el filtro de formato ### v1.3.6 — 2026-06-12 - **Topología — iconos de dispositivo** — cada nodo ahora muestra un icono SVG de Lucide que coincide con su tipo de dispositivo (router/wifi, ordenador/portátil, impresora, NAS/servidor, smartphone, switch de red, Raspberry Pi) en lugar de un círculo genérico; 5 nuevos iconos SVG incluidos (`printer`, `server`, `smartphone`, `cpu`, `laptop`) - **Topología — detección mDNS** — el tipo de dispositivo se detecta mediante `avahi-browse` (opcional, se ejecuta en paralelo con el escaneo nmap); identifica impresoras (`_ipp._tcp`, `PDL Printer`), teléfonos y televisores Android (`_googlecast._tcp`, `_androidtvremote2._tcp`), Macs de Apple (modelo `am=Mac16,x` en AirPlay TXT), dispositivos NAS (Synology informa `model=Xserve`), escritorios KDE Connect; recurre a heurísticas de OUI del fabricante MAC y nombre de host cuando avahi no está disponible - **Topología — panel de detalles** muestra la clase de dispositivo detectada (Impresora, Smartphone, NAS…) en lugar de la etiqueta genérica "Host"; i18n en los 8 idiomas - **Traceroute — zoom automático** — el mapa mundial se amplía y centra automáticamente en el cuadro delimitador de los saltos geolocalizados al final de cada ruta; se desactiva cuando el usuario desplaza o amplía manualmente; se restaura en el siguiente traceroute; clic derecho restablece la vista completa del mundo ### v1.3.5 — 2026-06-06 - **Compatibilidad con macOS** — los 9 módulos de red ahora se ejecutan en macOS sin romper el comportamiento en Linux; cada módulo detecta la plataforma al inicio (`_IS_MACOS`) y se ramifica a comandos nativos de macOS: `route -n get default`, `ifconfig`, `scutil --dns`, `networksetup`, `system_profiler SPAirPortDataType`, `pfctl`, `netstat -ib`; la escalada de privilegios usa `osascript` + `with administrator privileges` en lugar de `pkexec`; la fuente monoespaciada usa `Menlo` en lugar de `Monospace` - **Módulos con rutas duales Linux/macOS**: Dashboard, Interfaces, Wi-Fi, Topology, Bandwidth, Firewall (pf.conf + pfctl), Connection Manager, Hosts File, MTR - **Módulos sin cambios** (herramientas idénticas en ambas plataformas): DNS, Nmap Scan, SNMP, Whois ### v1.3.2 — 2026-06-06 - **i18n ampliado a 8 idiomas** — añadidos Italiano, Português, 日本語 (japonés) y 中文 (chino simplificado); la interfaz completa (los 27 módulos, ~720 claves de traducción) ahora está disponible en FR / EN / ES / DE / IT / PT / JA / ZH; aparece un aviso de reinicio tras cambiar el idioma en Ajustes - **Ayuda contextual en 8 idiomas** — el panel de la insignia `?` (descripción, ejemplos de uso y comandos CLI equivalentes) ahora cubre los 8 idiomas para cada módulo; anteriormente JA y ZH recurrían al inglés - **Corrección de error** — las descripciones emergentes de navegación para SMB/NFS y Hosts File se mostraban en francés independientemente del idioma seleccionado; se añadieron las claves faltantes `nav_hint_smb_nfs` y `nav_hint_hosts` a los 7 bloques de idioma no franceses ### v1.3.1 — 2026-06-05 - **Gestor de claves SSH** — lista todos los pares de claves en `~/.ssh/` (archivo, tipo, bits, comentario, huella SHA256); genera claves Ed25519 o RSA 4096 con frase de contraseña opcional (detección de discrepancia, nombre de archivo automático por tipo); copia la clave pública al portapapeles; despliega en un servidor remoto mediante `ssh-copy-id` en un terminal en línea con soporte de stdin para solicitudes de contraseña; elimina pares de claves con confirmación; crea automáticamente `~/.ssh/` si no existe; i18n: fr / en / es / de ### v1.3.0 — 2026-06-03 - **Inspector TLS / SSL** — inspecciona el certificado de cualquier servidor: CN del sujeto, SANs, emisor, fechas de validez (con código de colores: verde / naranja < 30 días / rojo caducado), número de serie, protocolo TLS, conjunto de cifrado y cadena de certificados (mediante `openssl s_client`); funciona para certificados válidos, caducados y autofirmados; mensajes de error amigables para hosts inaccesibles - **Navegador SMB / NFS** — lista recursos compartidos y exportaciones de cualquier servidor; pestaña SMB: `smbclient -L` con credenciales opcionales, muestra nombre / tipo / comentario del recurso compartido; pestaña NFS: `showmount -e`, muestra la ruta de exportación y la lista de acceso; detecta herramientas faltantes con instrucciones de instalación específicas de la distribución --- [Read more](https://github.com/thongor77/nmlinux)