Есть ли способ проверить состояние определенного порта из командной строки Windows? Я знаю, что могу использовать netstat для проверки всех портов, но netstat работает медленно, а просмотр конкретного порта, вероятно, не работает.
Командная строка для просмотра конкретного порта
Ответы (14)
Вот простое решение поиска порта ...
В cmd:
netstat -na | find "8080"
В bash:
netstat -na | grep "8080"
В PowerShell:
netstat -na | Select-String "8080"
-o
(т.е. -nao
здесь) для включения PID процесса, использующего порт.
- person Steve Chambers; 28.11.2017
Вы можете использовать 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>
когда у меня возникают проблемы с WAMP apache, я использую этот код, чтобы узнать, какая программа использует порт 80.
netstat -o -n -a | findstr 0.0:80
3068
- это PID, поэтому я могу найти его в диспетчере задач и остановить этот процесс.
Как отмечено в другом месте: используйте 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 /?
netstat -a -n | find /c "10.240.199.9:8080"
он даст вам количество сокетов, активных на определенном IP-адресе и порту (номер порта сервера)
FIND: Parameter format not correct
- person Chaminda Bandara; 09.01.2017
Для пользователей Windows 8: откройте командную строку, введите netstat -an | найдите "номер вашего порта", введите.
Если приходит ответ типа ПРОСЛУШИВАНИЕ, значит, порт используется, в противном случае он свободен.
Чтобы улучшить ответ @ 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 *[^ ]*:[^ ]*"
Это поможет тебе
netstat -atn | grep <port no> # For tcp
netstat -aun | grep <port no> # For udp
netstat -atun | grep <port no> # For both
Для порта 80 команда будет выглядеть так: netstat -an | найти "80" Для порта n команда будет выглядеть так: netstat -an | найти "п"
Здесь netstat - это инструкция для вашей машины
-a: отображает все подключения и порты прослушивания -n: отображает все адреса и инструкции в числовом формате (это необходимо, поскольку вывод -a может содержать имена компьютеров)
Затем команда find для «сопоставления с образцом» вывода предыдущей команды.
Он предоставит вам все активные сокеты на определенном IP:
netstat -an | find "172.20.1.166"
В 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. - person user207421   schedule 23.10.2014