Hoy aprenderemos a comprobar uno o varios puertos abiertos de un ordenador remoto usando la terminal de MAC, para ser exactos usaremos el comando netcat.
Vamos al lio, abrimos la terminal desde la carpeta de Utilidades, ejecutamos el comando nc, con la siguiente estructura para comprobar un puerto:
nc -zv direcciónIP_o_NombreDelEquipo NúmeroDePuerto
Esta es la estructura del comando para el escaneo de un rango de puertos
nc -zv direcciónIP_o_NombreDelEquipo PrimerPuerto-ÚltimoPuerto
Si no te queda muy claro, vamos con los ejemplos que viéndolo en acción siempre es más entendible 🙂
Tabla de contenidos
Ejemplos, escanear puertos abiertos en MAC
Comprobar si hay conexión SMB contra un PC
Aquí comprobamos si podemos llegar a puerto 445 de un equipo Windows llamado PC-RODOLFO.LOCAL
nc -zv PC-RODOLFO.LOCAL 445

Comprobar si hay conexión contra un servidor SMTP
En este ejemplo comprobamos si tenemos conexión contra el puerto 587 de SMTP.
nc -zv mail.labsmac.es 587

Comprobar un rango puertos
Aquí comprobamos un rango de puertos de un Mac que van del puerto 20 al 22.
nc -zv iMac-LabsMac.local 20-22

En este ejemplo, hemos elegido un rango bastante reducido pero imagínate que eliges un rango entre cientos de puertos, puede que se nos dificulte el ver los puertos abiertos (succeeded), así que vamos a filtrar su salida.
Filtrando el resultado
Si intentamos filtrar usando grep a través de la palabra succeeded, no va a funcionar…

El comando nc, arroja todo el resultado en forma de error (STDERR), por eso no funciona grep. Por ejemplo, si ejecutamos el comando anterior pero redirigimos los errores a null, no veremos nada, porque estamos redirigiendo los errores a null.

La solución es redirigir (2>&1) STDERR a STDIN, y luego usar grep, de la siguiente forma:
nc -zv iMac-LabsMac.local 20-22 2>&1 | grep succeeded

Ahora si puedes filtrar el resultado de nc, espero que te haya gustado el post 🙂 Nos vemos en el siguiente post!