บรรทัดคำสั่งสำหรับดูพอร์ตเฉพาะ


263

มีวิธีตรวจสอบสถานะของพอร์ตเฉพาะจากบรรทัดคำสั่งของ Windows หรือไม่ ฉันรู้ว่าฉันสามารถใช้ netstat เพื่อตรวจสอบพอร์ตทั้งหมด แต่ netstat นั้นช้าและดูพอร์ตเฉพาะที่อาจไม่ใช่


6
netstatจะช้าก็ต่อเมื่อคุณไม่ได้ใช้-nสวิตช์ซึ่งหมายความว่าจะต้องทำการค้นหา DNS เป็นจำนวนมาก
มาร์ควิสแห่ง Lorne

คำตอบ:


282

นี่คือทางออกที่ง่ายในการค้นหาพอร์ต ...

ใน cmd:

netstat -na | find "8080"

ในทุบตี:

netstat -na | grep "8080"

ใน PowerShell:

netstat -na | Select-String "8080"

3
วิธีใช้คำสั่งนี้ ฉันต้องการทราบว่าหมายเลขพอร์ตนี้ใช้งานได้หรือไม่เชื่อมโยง: - [ลิงค์] (https: //.localhost: 9043 / ibm / console / login.do)
Mayur Ingle

8
ยังควรกล่าวถึงการ-oตั้งค่าสถานะ (เช่น-naoที่นี่) เพื่อรวม PID ของกระบวนการโดยใช้พอร์ต
Steve Chambers

104

คุณสามารถใช้การ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


73

ฉันใช้:

netstat –aon | find "<port number>"

ที่นี่ o แสดงถึง ID กระบวนการ ตอนนี้คุณสามารถทำอะไรกับรหัสกระบวนการ เพื่อยุติกระบวนการเช่นใช้:

taskkill /F /pid <process ID>

คำตอบที่เรียบง่ายและคมชัดขอบคุณ
Mohit Singh

69

เมื่อฉันมีปัญหากับ WAMP apache ฉันใช้รหัสนี้เพื่อค้นหาโปรแกรมที่ใช้พอร์ต 80

netstat -o -n -a | findstr 0.0:80

ป้อนคำอธิบายรูปภาพที่นี่

3068 เป็น PID ดังนั้นฉันสามารถหาได้จากตัวจัดการงานและหยุดกระบวนการนั้น


ดีมากขอบคุณมาก! พิเศษสำหรับ TCP ฉันใช้ดังต่อไปนี้: netstat -o -nap TCP | findstr 0.0: 80
denyoha

20

ตามที่ระบุไว้ที่อื่น: ใช้ 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 /?

9
netstat -a -n | find /c "10.240.199.9:8080"

มันจะให้จำนวนซ็อกเก็ตที่ใช้งานบน IP และพอร์ตเฉพาะ (หมายเลขพอร์ตเซิร์ฟเวอร์)


3
สิ่งนี้ไม่สามารถใช้งานได้กับ power shell ของ windows บน windows 2012 R2 และได้รับผลลัพธ์เป็นFIND: Parameter format not correct
Chaminda Bandara

6

สำหรับผู้ใช้ Windows 8: เปิดพร้อมท์คำสั่งพิมพ์netstat -an | ค้นหา "หมายเลขพอร์ตของคุณ"ป้อน

หากการตอบกลับมาเหมือนLISTENINGแสดงว่าพอร์ตนั้นใช้งานอยู่มิฉะนั้นจะว่าง


2

เพื่อปรับปรุงการตอบกลับของ @ 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 *[^ ]*:[^ ]*"

1

สำหรับพอร์ต 80 คำสั่งจะเป็น: netstat -an | ค้นหา "80" สำหรับพอร์ต n คำสั่งจะเป็น: netstat -an | ค้นหา "n"

ที่นี่ netstat คือคำแนะนำสำหรับเครื่องของคุณ

-a: แสดงการเชื่อมต่อและพอร์ตการรับฟังทั้งหมด -n: แสดงที่อยู่และคำแนะนำทั้งหมดในรูปแบบตัวเลข (จำเป็นต้องใช้เนื่องจากเอาต์พุตจาก -a สามารถมีชื่อเครื่องได้)

จากนั้นคำสั่ง find เพื่อ "จับคู่รูปแบบ" ผลลัพธ์ของคำสั่งก่อนหน้า


0

สิ่งนี้จะช่วยคุณ

netstat -atn | grep <port no>          # For tcp
netstat -aun | grep <port no>           # For udp
netstat -atun | grep <port no>          # For both

0

ใน RHEL 7 ฉันใช้คำสั่งนี้เพื่อกรองหลายพอร์ตใน LISTEN State:

sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'

-1

คำสั่งนี้จะแสดงพอร์ตทั้งหมดและที่อยู่ปลายทาง:

netstat -f 

1
คำขอคือการตรวจสอบว่ามีการใช้พอร์ตเฉพาะหรือไม่
Ro Yo Mi

-5

ใช้คำสั่ง 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)

4
ลบจุดเพราะนี่ไม่ใช่คำสั่ง windows ถ้ามันมีอยู่ใน windows ไม่มีการอภิปรายเกี่ยวกับวิธีการรับมัน
Ro Yo Mi

1
ไม่ตอบคำถามของ OP -1
FractalSpace
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.