Командная строка для просмотра конкретного порта

265

Есть ли способ проверить состояние определенного порта из командной строки Windows? Я знаю, что могу использовать netstat для проверки всех портов, но netstat работает медленно и, вероятно, не смотрит на конкретный порт.

user1580018
источник
6
netstatработает медленно, если вы не используете -nкоммутатор, а это значит, что он должен выполнять множество DNS-запросов.
маркиз Лорн

Ответы:

284

Вот простое решение поиска порта ...

В cmd:

netstat -na | find "8080"

В Баш:

netstat -na | grep "8080"

В PowerShell:

netstat -na | Select-String "8080"
Гора Наушад Алам
источник
3
Как использовать эту команду? Я хочу знать, что этот номер порта работает или нет ссылка: - [ссылка] (https: //.localhost: 9043 / ibm / console / login.do)
Mayur Ingle
8
Также стоит упомянуть -oфлаг (т.е. -naoздесь) для включения PID процесса, использующего порт.
Стив Чемберс
104

Вы можете использовать netstatкомбинации с -npфлагами и конвейером для команд findили findstr.

Основное использование как таковое:

netstat -np <protocol> | find "port #"

Так, например, чтобы проверить порт 80 в TCP, вы можете сделать это: netstat -np TCP | find "80" что в итоге даст следующий вид вывода:

TCP    192.168.0.105:50466    64.34.119.101:80       ESTABLISHED
TCP    192.168.0.105:50496    64.34.119.101:80       ESTABLISHED

Как видите, это показывает только соединения на порту 80 для протокола TCP.

Rivasa
источник
73

Я использую:

netstat –aon | find "<port number>"

здесь o представляет идентификатор процесса. теперь вы можете делать что угодно с идентификатором процесса. Чтобы завершить процесс, например, используйте:

taskkill /F /pid <process ID>
Химадри Пант
источник
простой и четкий ответ, спасибо
Мохит Сингх
69

когда у меня проблемы с apache WAMP, я использую этот код, чтобы найти, какая программа использует порт 80.

netstat -o -n -a | findstr 0.0:80

введите описание изображения здесь

3068 это PID, так что я могу найти его в диспетчере задач и остановить этот процесс.

Мохсен Сафари
источник
Очень приятно, большое спасибо! Специально для TCP я использую следующее: netstat -o -nap TCP | findstr 0.0: 80
денёха
20

Как уже было отмечено: используйте netstat с соответствующими переключателями, а затем отфильтруйте результаты с помощью команды find [str]

Самое основное:

netstat -an | find ":N"

или

netstat -a -n | find ":N"

Чтобы найти иностранный порт, вы можете использовать:

netstat -an | findstr ":N[^:]*$"

Чтобы найти локальный порт, вы можете использовать:

netstat -an | findstr ":N.*:[^:]*$"

Где N - номер порта, который вас интересует.

-n гарантирует, что все порты будут числовыми, т. е. не будут возвращены в переводе на имена сервисов.

-a обеспечит вам поиск всех соединений (TCP, UDP, прослушивание ...)

В findстроке необходимо указать двоеточие в качестве спецификатора порта, в противном случае число может совпадать с локальными или внешними адресами.

При необходимости вы можете сузить область поиска, используя другие переключатели netstat ...

Дальнейшее чтение (^ 0 ^)

netstat /?

find /?

findstr /?
EndUzr
источник
9
netstat -a -n | find /c "10.240.199.9:8080"

это даст вам количество сокетов, активных на конкретном IP и порту (номер порта сервера)

Удай Сингх
источник
3
Это не работает для Windows Power Shell на Windows 2012 R2 и получил результат какFIND: Parameter format not correct
Chaminda Bandara
6

Для пользователя Windows 8: откройте командную строку, введите netstat -an | найти "номер вашего порта" , введите.

Если ответ приходит как LISTENING, то порт используется, иначе он свободен.

Пратик Рой
источник
2

Чтобы улучшить ответ @ EndUzr :

Чтобы найти внешний порт (IPv4 или IPv6), вы можете использовать:

netstat -an | findstr /r /c:":N [^:]*$"

Чтобы найти локальный порт (IPv4 или IPv6), вы можете использовать:

netstat -an | findstr /r /c:":N *[^ ]*:[^ ]* "

Где N - номер порта, который вас интересует. Параметр "/ r" указывает ему обрабатывать его как регулярное выражение. Ключ / c позволяет findstr включать пробелы в строки поиска вместо обработки пробела в качестве разделителя строки поиска. Это дополнительное пространство предотвращает неправильное обращение с более длинными портами - например, ": 80" против ": 8080" и другие проблемы с перебором портов.

Чтобы вывести список удаленных подключений к локальному серверу RDP, например:

netstat -an | findstr /r /c:":3389 *[^ ]*:[^ ]*"

Или посмотреть, кто касается вашего DNS:

netstat -an | findstr /r /c:":53 *[^ ]*:[^ ]*"

Если вы хотите исключить локальные порты, вы можете использовать серию исключений с "/ v" и экранирующие символы с обратной косой чертой:

netstat -an | findstr /v "0.0.0.0 127.0.0.1 \[::\] \[::1\] \*\:\*" | findstr /r /c:":80 *[^ ]*:[^ ]*"
Shawn
источник
1

Для порта 80 команда будет такой: netstat -an | find "80" Для порта n команда будет выглядеть так: netstat -an | найти "н"

Здесь netstat - это инструкция к вашей машине

-a: отображает все соединения и прослушивающие порты -n: отображает все адреса и инструкции в числовом формате (это необходимо, поскольку выходные данные из -a могут содержать имена компьютеров)

Затем команда find для «Pattern Match» выводит предыдущую команду.

subodhkarwa
источник
0

Это поможет вам

netstat -atn | grep <port no>          # For tcp
netstat -aun | grep <port no>           # For udp
netstat -atun | grep <port no>          # For both
Jobin
источник
0

В RHEL 7 я использую эту команду для фильтрации нескольких портов в состоянии LISTEN:

sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'
Эрнальдо Гонсалес
источник
-2

Эта команда покажет все порты и их адрес назначения:

netstat -f 
Dharmajulian
источник
1
Запрос состоял в том, чтобы выяснить, используется ли определенный порт.
Ро Йо Ми
-5

Используйте команду lsof "lsof -i tcp: port #", вот пример.

$ lsof -i tcp:1555 
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    27330 john  121u  IPv4 36028819      0t0  TCP 10.10.10.1:58615->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  201u  IPv4 36018833      0t0  TCP 10.10.10.1:58586->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  264u  IPv4 36020018      0t0  TCP 10.10.10.1:58598->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  312u  IPv4 36058194      0t0  TCP 10.10.10.1:58826->10.10.10.10:livelan (ESTABLISHED)
stones333
источник
4
Минус точка, потому что это не команда Windows. Если это доступно на окнах, нет обсуждения того, как его приобрести.
Ро Йо Ми
1
Не отвечает на вопрос ОП. -1.
FractalSpace