Есть ли способ проверить состояние определенного порта из командной строки Windows? Я знаю, что могу использовать netstat для проверки всех портов, но netstat работает медленно и, вероятно, не смотрит на конкретный порт.
Есть ли способ проверить состояние определенного порта из командной строки Windows? Я знаю, что могу использовать netstat для проверки всех портов, но netstat работает медленно и, вероятно, не смотрит на конкретный порт.
Ответы:
Вот простое решение поиска порта ...
В cmd:
netstat -na | find "8080"
В Баш:
netstat -na | grep "8080"
В PowerShell:
netstat -na | Select-String "8080"
-o
флаг (т.е. -nao
здесь) для включения PID процесса, использующего порт.
Вы можете использовать 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.
Я использую:
netstat –aon | find "<port number>"
здесь o представляет идентификатор процесса. теперь вы можете делать что угодно с идентификатором процесса. Чтобы завершить процесс, например, используйте:
taskkill /F /pid <process ID>
когда у меня проблемы с apache WAMP, я использую этот код, чтобы найти, какая программа использует порт 80.
netstat -o -n -a | findstr 0.0:80
3068
это PID, так что я могу найти его в диспетчере задач и остановить этот процесс.
Как уже было отмечено: используйте 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 /?
netstat -a -n | find /c "10.240.199.9:8080"
это даст вам количество сокетов, активных на конкретном IP и порту (номер порта сервера)
FIND: Parameter format not correct
Для пользователя Windows 8: откройте командную строку, введите netstat -an | найти "номер вашего порта" , введите.
Если ответ приходит как LISTENING, то порт используется, иначе он свободен.
Чтобы улучшить ответ @ 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 *[^ ]*:[^ ]*"
Для порта 80 команда будет такой: netstat -an | find "80" Для порта n команда будет выглядеть так: netstat -an | найти "н"
Здесь netstat - это инструкция к вашей машине
-a: отображает все соединения и прослушивающие порты -n: отображает все адреса и инструкции в числовом формате (это необходимо, поскольку выходные данные из -a могут содержать имена компьютеров)
Затем команда find для «Pattern Match» выводит предыдущую команду.
В RHEL 7 я использую эту команду для фильтрации нескольких портов в состоянии LISTEN:
sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'
Эта команда покажет все порты и их адрес назначения:
netstat -f
Используйте команду 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)
netstat
работает медленно, если вы не используете-n
коммутатор, а это значит, что он должен выполнять множество DNS-запросов.