Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: user1580018Ответов: 12

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

  • netstat работает медленно только в том случае, если вы не используете переключатель -n, что означает, что он должен выполнять много поисков DNS. user207421 23.10.2014

windowsnetworkingportcommand-prompt

Ответы

Ответ 1 · рейтинг 347 · Md. Naushad Alam

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

В cmd:

netstat -na | find "8080"

В bash:

netstat -na | grep "8080"

В PowerShell:

netstat -na | Select-String "8080"

Ответ 2 · рейтинг 108 · Rivasa

Вы можете использовать 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.

Ответ 3 · рейтинг 77 · Himadri Pant

Я использую:

netstat -aon | find "<port number>"

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

taskkill /F /pid <process ID>

Ответ 4 · рейтинг 74 · Mohsen Safari

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

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

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

Ответ 5 · рейтинг 20 · EndUzr

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

Самый простой:

netstat -an | find ":N"

or

netstat -a -n | find ":N"

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

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

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

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

Где N - номер интересующего вас порта.

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

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

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

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

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

netstat /?

find /?

findstr /?

Ответ 6 · рейтинг 10 · Uday Singh

netstat -a -n | find /c "10.240.199.9:8080"

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

Ответ 7 · рейтинг 6 · Pratik Roy

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

Если приходит ответ типа ПРОСЛУШИВАНИЕ, значит, порт используется, в противном случае он свободен.

Ответ 8 · рейтинг 5 · shawn

Чтобы улучшить ответ @ 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" и escape-символами с обратной косой чертой:

netstat -an | findstr /v "0.0.0.0 127.0.0.1 \[::\] \[::1\] \*\:\*" | findstr /r /c:":80 *[^ ]*:[^ ]*"

Ответ 9 · рейтинг 4 · Jobin James

Это поможет тебе

netstat -atn | grep <port no>          # For tcp
netstat -aun | grep <port no>           # For udp
netstat -atun | grep <port no>          # For both

Ответ 10 · рейтинг 3 · subodhkarwa

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

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

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

Затем команда find для "сопоставления с образцом" вывода предыдущей команды.

Ответ 11 · рейтинг 2 · Rahid Zeynalov

Он предоставит вам все активные сокеты на определенном IP:

netstat -an | find "172.20.1.166"

Ответ 12 · Hernaldo Gonzalez

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

sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы