Có cách nào để kiểm tra trạng thái của một cổng cụ thể từ dòng lệnh Windows không? Tôi biết tôi có thể sử dụng netstat để kiểm tra tất cả các cổng nhưng netstat chậm và nhìn vào một cổng cụ thể có lẽ là không.
Có cách nào để kiểm tra trạng thái của một cổng cụ thể từ dòng lệnh Windows không? Tôi biết tôi có thể sử dụng netstat để kiểm tra tất cả các cổng nhưng netstat chậm và nhìn vào một cổng cụ thể có lẽ là không.
Câu trả lời:
Đây là giải pháp dễ dàng cho việc tìm kiếm cổng ...
Trong cmd:
netstat -na | find "8080"
Trong bash:
netstat -na | grep "8080"
Trong PowerShell:
netstat -na | Select-String "8080"
-o
cờ (tức là -nao
ở đây) để bao gồm cả PID của quá trình sử dụng cổng.
Bạn có thể sử dụng netstat
kết hợp với các -np
cờ và một đường ống đến các lệnh find
hoặc findstr
.
Cách sử dụng cơ bản là như vậy:
netstat -np <protocol> | find "port #"
Vì vậy, ví dụ để kiểm tra cổng 80 trên TCP, bạn có thể thực hiện việc này: netstat -np TCP | find "80"
Cuối cùng sẽ đưa ra loại đầu ra sau:
TCP 192.168.0.105:50466 64.34.119.101:80 ESTABLISHED
TCP 192.168.0.105:50496 64.34.119.101:80 ESTABLISHED
Như bạn có thể thấy, điều này chỉ hiển thị các kết nối trên cổng 80 cho giao thức TCP.
Tôi sử dụng:
netstat –aon | find "<port number>"
ở đây o đại diện cho ID quá trình. bây giờ bạn có thể làm bất cứ điều gì với ID tiến trình. Để chấm dứt quá trình, ví dụ, sử dụng:
taskkill /F /pid <process ID>
Khi tôi gặp vấn đề với WAMP apache, tôi sử dụng mã này để tìm chương trình nào đang sử dụng cổng 80.
netstat -o -n -a | findstr 0.0:80
3068
là PID, vì vậy tôi có thể tìm thấy nó từ trình quản lý tác vụ và dừng quá trình đó.
Như đã lưu ý ở nơi khác: sử dụng netstat, với các công tắc thích hợp và sau đó lọc kết quả bằng find [str]
Cơ bản nhất:
netstat -an | find ":N"
hoặc là
netstat -a -n | find ":N"
Để tìm một cổng nước ngoài, bạn có thể sử dụng:
netstat -an | findstr ":N[^:]*$"
Để tìm một cổng cục bộ, bạn có thể sử dụng:
netstat -an | findstr ":N.*:[^:]*$"
Trong đó N là số cổng bạn quan tâm.
-n
đảm bảo tất cả các cổng sẽ là số, tức là không được trả lại dưới dạng dịch sang tên dịch vụ.
-a
sẽ đảm bảo bạn tìm kiếm tất cả các kết nối (TCP, UDP, lắng nghe ...)
Trong find
chuỗi, bạn phải bao gồm dấu hai chấm, như vòng loại cổng, nếu không, số có thể khớp với địa chỉ địa phương hoặc địa chỉ nước ngoài.
Bạn có thể thu hẹp hơn nữa việc tìm kiếm bằng các công tắc netstat khác nếu cần ...
Đọc thêm (^ 0 ^)
netstat /?
find /?
findstr /?
netstat -a -n | find /c "10.240.199.9:8080"
nó sẽ cung cấp cho bạn số lượng ổ cắm hoạt động trên một cổng và IP cụ thể (số cổng máy chủ)
FIND: Parameter format not correct
Để cải thiện phản hồi của @ EndUzr :
Để tìm cổng nước ngoài (IPv4 hoặc IPv6), bạn có thể sử dụng:
netstat -an | findstr /r /c:":N [^:]*$"
Để tìm một cổng cục bộ (IPv4 hoặc IPv6), bạn có thể sử dụng:
netstat -an | findstr /r /c:":N *[^ ]*:[^ ]* "
Trong đó N là số cổng bạn quan tâm. Công tắc "/ r" bảo nó xử lý nó dưới dạng regrec. Công tắc "/ c" cho phép findstr bao gồm khoảng trắng trong chuỗi tìm kiếm thay vì coi khoảng trắng là dấu phân cách chuỗi tìm kiếm. Không gian được thêm vào này ngăn các cổng dài hơn bị ngược đãi - ví dụ: ": 80" so với ": 8080" và các vấn đề khác về cổng.
Để liệt kê các kết nối từ xa đến máy chủ RDP cục bộ, ví dụ:
netstat -an | findstr /r /c:":3389 *[^ ]*:[^ ]*"
Hoặc để xem ai đang chạm vào DNS của bạn:
netstat -an | findstr /r /c:":53 *[^ ]*:[^ ]*"
Nếu bạn muốn loại trừ các cổng chỉ cục bộ, bạn có thể sử dụng một loạt các trường hợp ngoại lệ với "/ v" và thoát các ký tự có dấu gạch chéo ngược:
netstat -an | findstr /v "0.0.0.0 127.0.0.1 \[::\] \[::1\] \*\:\*" | findstr /r /c:":80 *[^ ]*:[^ ]*"
Đối với cổng 80, lệnh sẽ là: netstat -an | tìm "80" Đối với cổng n, lệnh sẽ là: netstat -an | tìm "n"
Ở đây, netstat là hướng dẫn cho máy của bạn
-a: Hiển thị tất cả các kết nối và cổng nghe -n: Hiển thị tất cả địa chỉ và hướng dẫn ở định dạng số (Điều này là bắt buộc vì đầu ra từ -a có thể chứa tên máy)
Sau đó, một lệnh find để "Khớp mẫu" đầu ra của lệnh trước đó.
Trong RHEL 7, tôi sử dụng lệnh này để lọc một số cổng ở trạng thái LISTEN:
sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'
Sử dụng lệnh lsof "lsof -i tcp: port #", đây là một ví dụ.
$ 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
chỉ chậm nếu bạn không sử dụng công-n
tắc, điều đó có nghĩa là nó phải thực hiện nhiều tra cứu DNS.