No Windows, usando a linha de comando, como você verifica se uma porta remota está aberta?

Respostas:

62

Outro dia encontrei uma jóia hiddem da Microsoft, projetada para testar portas:

Portqry.exe

"Portqry.exe é um utilitário de linha de comando que você pode usar para ajudar a solucionar problemas de conectividade TCP / IP. O Portqry.exe é executado em computadores com Windows 2000, com Windows XP e com Windows Server 2003. O utilitário relata o status da porta TCP e UDP em um computador que você seleciona. "

Peter M
fonte
Nota: A tentativa de fazer o download da Microsoft retornou uma página informando que o download "não está mais disponível".
dgw
@dgw Obrigado por isso .. google mostra uma nova versão se você procurar por `retratar" que eu vou verificar amanhã
Peter M
2
versão do console microsoft.com/downloads/… e versão da interface do usuário: download.microsoft.com/download/3/f/4/… Ref: support.microsoft.com/en-us/help/310099/…
Junior M
52

Qual versão do Windows? Para Windows 8 / Server 2012 e posterior, o seguinte funciona no PowerShell:

Test-NetConnection 128.159.1.1 -Port 80

Alguns usuários do Google também vão encontrar alternativas que usam o .NET Framework diretamente (já que o PowerShell permite fazer isso) para sistemas executando versões inferiores do Windows que não estarão Test-NetConnectiondisponíveis.

Se você não tem aversão ao uso de utilitários de terceiros, o Nmap também é um ótimo amigo e funciona a partir da linha de comando.

Iszi
fonte
1
Método $connection = (New-Object Net.Sockets.TcpClient).Connect($target,$port); If ($connection.Connected) { $connection.Close() }
net
No Win7, isso não funciona :-(
samsmith 5/11/2015
@samsmith Você está falando sobre o comando na minha resposta ou sobre o comentário do ST8Z ...? O da minha resposta funciona apenas para Win8 / 2k12 e superior, e a resposta diz o mesmo.
Iszi
1
Parece ser o Windows 8.1 - Não consigo encontrá-lo no Windows 8
Andy Krouwel
1
Funciona muito bem no Windows 10 e não preciso instalar nenhum programa ou adicionar nenhum recurso. Obrigado! :)
Steve Bauman
24

Use o comando telnet para conectar-se ao servidor na porta especificada e veja se uma conexão pode ser estabelecida.

Sucesso:

$ telnet my_server 25
220 my_server ESMTP Postfix

Falhou:

$ telnet my_server 23632
Connecting To my_server...Could not open connection to the host, on port 23632:
Connect failed
Jørn Schou-Rode
fonte
14
não funciona para UDP.
Adriano Varoli Piazza
8
UDP é sem conexão ..
Amalgovinus
7

O Telnet funcionará para o TCP.

O Netcat é uma ferramenta melhor para esse tipo de coisa, incluindo UDP, mas alguns softwares AV consideram uma 'ferramenta hacker maligna'

whatsisname
fonte
1

o comando a seguir listará todas as portas em uso na máquina ...

netstat -a

A saída contém o protocolo, endereço local, endereço externo e estado atual

Documentação do Netstat no microsoft.com

Careca
fonte
8
Pergunta pergunta sobre portas abertas em uma máquina remota , não local.
Chris S
0

Use a porta netcat do Windows :

>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
fonte
-4

'netstat' é seu amigo.

quosoo
fonte
3
Máquina local sim, máquina remota não.
3
Esta resposta foi publicada antes da edição que especificou que se trata de uma porta na máquina remota.