มีวิธีตรวจสอบสถานะของพอร์ตเฉพาะจากบรรทัดคำสั่งของ 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 แสดงถึง ID กระบวนการ ตอนนี้คุณสามารถทำอะไรกับรหัสกระบวนการ เพื่อยุติกระบวนการเช่นใช้:
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"
หรือ
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" จะบอกให้ประมวลผลเป็น regexp สวิตช์ "/ c" อนุญาตให้ findstr รวมช่องว่างภายในสตริงการค้นหาแทนการใช้พื้นที่เป็นตัวคั่นสตริงการค้นหา พื้นที่ที่ถูกเพิ่มนี้ป้องกันพอร์ตที่ไม่ถูกใช้งานอีกต่อไป - ตัวอย่างเช่น ": 80" vs ": 8080" และปัญหาอื่น ๆ ที่พอร์ต munging
หากต้องการแสดงรายการการเชื่อมต่อระยะไกลไปยังเซิร์ฟเวอร์ 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 *[^ ]*:[^ ]*"
สำหรับพอร์ต 80 คำสั่งจะเป็น: netstat -an | ค้นหา "80" สำหรับพอร์ต n คำสั่งจะเป็น: netstat -an | ค้นหา "n"
ที่นี่ netstat คือคำแนะนำสำหรับเครื่องของคุณ
-a: แสดงการเชื่อมต่อและพอร์ตการรับฟังทั้งหมด -n: แสดงที่อยู่และคำแนะนำทั้งหมดในรูปแบบตัวเลข (จำเป็นต้องใช้เนื่องจากเอาต์พุตจาก -a สามารถมีชื่อเครื่องได้)
จากนั้นคำสั่ง find เพื่อ "จับคู่รูปแบบ" ผลลัพธ์ของคำสั่งก่อนหน้า
สิ่งนี้จะช่วยคุณ
netstat -atn | grep <port no> # For tcp
netstat -aun | grep <port no> # For udp
netstat -atun | grep <port no> # For both
ใน RHEL 7 ฉันใช้คำสั่งนี้เพื่อกรองหลายพอร์ตใน LISTEN State:
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 เป็นจำนวนมาก