Есть ли способ проверить состояние определенного порта из командной строки Windows? Я знаю, что могу использовать netstat для проверки всех портов, но netstat работает медленно, а просмотр конкретного порта, вероятно, не работает.
Вопрос
Командная строка для просмотра конкретного порта
- netstat работает медленно только в том случае, если вы не используете переключатель -n, что означает, что он должен выполнять много поисков DNS. user207421 23.10.2014
Ответы
Ответ 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.
Похожие материалы
- IsDebuggerPresent Внутренние элементы
- Реализация оконных сообщений в Win3mu - Часть 2 Семантика сообщений
- Настройка Powershell
- Исправление "bash" не распознается как внутренняя или внешняя команда при использовании в сценариях npm на...
- Ошибка синтаксиса SQL при создании пространственной сети
- Библиотека Poco::Net зависает при выводе Poco::Net::SocketStream