En Windows, usando la línea de comando, ¿cómo verifica si un puerto remoto está abierto?

Respuestas:

62

El otro día encontré una gema hiddem de Microsoft que está diseñada para probar puertos:

Portqry.exe

"Portqry.exe es una utilidad de línea de comandos que puede usar para ayudar a solucionar problemas de conectividad TCP / IP. Portqry.exe se ejecuta en equipos con Windows 2000, en equipos con Windows XP y en equipos con Windows Server 2003. La utilidad informa el estado del puerto de los puertos TCP y UDP en una computadora que seleccione ".

Peter M
fuente
Nota: Al intentar descargar esto de Microsoft, se devolvió una página que indica que la descarga "ya no está disponible".
dgw
@dgw Gracias por eso ... google muestra una nueva versión si buscas "retratar" que veré mañana
Peter M
2
versión de consola microsoft.com/downloads/… y versión de la interfaz de usuario: download.microsoft.com/download/3/f/4/… Ref: support.microsoft.com/en-us/help/310099/…
Junior M
52

¿Qué versión de Windows? Para Windows 8 / Server 2012 y posterior, lo siguiente funciona en PowerShell:

Test-NetConnection 128.159.1.1 -Port 80

Algunos Google también mostrarán alternativas que usan el .NET Framework directamente (ya que PowerShell te permite hacerlo) para sistemas que ejecutan versiones inferiores de Windows que no estarán Test-NetConnectiondisponibles.

Si no eres reacio a utilizar utilidades de terceros, Nmap también es un muy buen amigo y funciona desde la línea de comandos.

Iszi
fuente
1
Método .Net:$connection = (New-Object Net.Sockets.TcpClient).Connect($target,$port); If ($connection.Connected) { $connection.Close() }
xXhRQ8sD2L7Z
En Win7, eso no funciona :-(
samsmith
@samsmith ¿Estás hablando del comando en mi respuesta, o el comentario de ST8Z ...? El que está en mi respuesta solo funciona para Win8 / 2k12 y superior, y la respuesta dice lo mismo.
Iszi
1
Parece ser Windows 8.1 - Parece que no puedo encontrarlo en Windows 8
Andy Krouwel
1
Funciona muy bien en Windows 10, y no necesito instalar ningún programa ni agregar ninguna característica. ¡Gracias! :)
Steve Bauman
24

Use el comando telnet para conectarse al servidor en el puerto especificado y ver si se puede establecer una conexión.

Éxito:

$ telnet my_server 25
220 my_server ESMTP Postfix

Fallar:

$ telnet my_server 23632
Connecting To my_server...Could not open connection to the host, on port 23632:
Connect failed
Jørn Schou-Rode
fuente
14
no funciona para UDP.
Adriano Varoli Piazza
8
UDP no tiene conexión ..
Amalgovinus
7

Telnet funcionará para TCP.

Netcat es una mejor herramienta para este tipo de cosas, incluido UDP, pero cuidado, algunos softwares AV lo consideran una 'herramienta de hackers malvados'

whatsisname
fuente
1

el siguiente comando enumerará todos los puertos en uso en la máquina ...

netstat -a

La salida contiene el protocolo, la dirección local, la dirección extranjera y el estado actual.

Documentación de Netstat en microsoft.com

Baldy
fuente
8
La pregunta se refiere a los puertos abiertos en una máquina remota , no local.
Chris S
0

Utilice el puerto de Windows netcat :

>nc -zvv www.google.com 80
www.google.com [108.177.96.103] 80 (http) open
sent 0, rcvd 0
>

>nc -zvv www.google.com 888
www.google.com [108.177.96.147] 888 (?): TIMEDOUT
sent 0, rcvd 0: NOTSOCK
>
rustyx
fuente
-4

'netstat' es tu amigo.

quosoo
fuente
3
Máquina local sí, máquina remota no.
3
Esta respuesta se publicó antes de la edición que especificaba que se trataba de un puerto en una máquina remota.