В Windows, используя командную строку, как проверить, открыт ли удаленный порт?

Ответы:

62

На днях я обнаружил камень от hiddem от Microsoft, предназначенный для тестирования портов:

Portqry.exe

«Portqry.exe - это утилита командной строки, которую можно использовать для устранения неполадок с подключением TCP / IP. Portqry.exe работает на компьютерах под управлением Windows 2000, компьютерах под управлением Windows XP и компьютерах под управлением Windows Server 2003. Утилита сообщает о состоянии портов TCP и UDP на выбранном вами компьютере. "

Питер М
источник
Примечание. При попытке загрузить это из Microsoft вернулась страница с сообщением о том, что загрузка «больше не доступна».
DGW
@dgw Спасибо за это .. Google показывает новую версию, если вы ищете `portray ', который я проверю завтра
Peter M
2
консольная версия microsoft.com/downloads/… и версия пользовательского интерфейса: download.microsoft.com/download/3/f/4/… Ref: support.microsoft.com/en-us/help/310099/…
Junior M
52

Какая версия Windows? Для Windows 8 / Server 2012 и более поздних версий в PowerShell работает следующее:

Test-NetConnection 128.159.1.1 -Port 80

Некоторые Googling также найдут альтернативы, которые используют .NET Framework напрямую (поскольку PowerShell позволяет вам это делать) для систем с более низкими версиями Windows, которые будут Test-NetConnectionнедоступны.

Если вы не против использования сторонних утилит, Nmap также очень хороший друг, и он работает из командной строки.

Iszi
источник
1
Метод .Net:$connection = (New-Object Net.Sockets.TcpClient).Connect($target,$port); If ($connection.Connected) { $connection.Close() }
xXhRQ8sD2L7Z
На Win7 это не работает :-(
samsmith
@samsmith Вы говорите о команде в моем ответе или о комментарии ST8Z ...? Тот, что в моем ответе, работает только для Win8 / 2k12 и выше, и ответ говорит так же.
Изи
1
Кажется, это Windows 8.1 - Кажется, не могу найти его на Windows 8
Энди Кроуел
1
Отлично работает на Windows 10, и мне не нужно устанавливать какие-либо программы или добавлять какие-либо функции. Спасибо! :)
Стив Бауман
24

Используйте команду telnet для подключения к серверу на указанном порту и посмотрите, можно ли установить соединение.

Успех:

$ telnet my_server 25
220 my_server ESMTP Postfix

Провал:

$ telnet my_server 23632
Connecting To my_server...Could not open connection to the host, on port 23632:
Connect failed
Йорн Шоу-Роде
источник
14
не работает для UDP.
Адриано Вароли Пьяцца
8
UDP не подключен ..
Амальговинус
7

Telnet будет работать по TCP.

Netcat - лучший инструмент для такого рода вещей, включая UDP, но будьте осторожны, некоторые AV-программы считают его «злым хакерским инструментом»

как зовут
источник
1

следующая команда выведет список всех используемых портов на машине ...

netstat -a

Вывод содержит протокол, локальный адрес, внешний адрес и текущее состояние

Документация Netstat на microsoft.com

Лысый
источник
8
Вопрос касается открытых портов на удаленной машине, а не локальной.
Крис С
0

Использовать порт netcat для 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
источник
-4

«netstat» - твой друг.

quosoo
источник
3
Локальная машина да, удаленная машина нет.
3
Этот ответ был опубликован до редактирования, в котором указано, что речь идет о порте на удаленном компьютере.