對于運維有時在排查網絡問題時需要去查看進程使用的端口,下面整了一個bat腳本,主要利用netstat命令找出使用TCP協議通信的端口,并將結果分割;將第二個參數(IP加端口)傳給%%i,第五個參數(PID號)傳給%%j;
下面介紹下腳本內容。
@echo off color 1f Title XP端口-進程查詢 setlocal enabledelayedexpansion echo ╔- -╗ echo 本機開放的端口及使用該端口的進程 echo ╚- -╝ echo ------------------------------------ echo 端口號 進程名稱 ECHO TCP協議: ::利用netstat命令找出使用TCP協議通信的端口,并將結果分割; ::將第二個參數(IP加端口)傳給%%i,第五個參數(PID號)傳給%%j; for /F "usebackq skip=4 tokens=2,5" %%i in (`"netstat -ano -p TCP"`) do ( call :Assoc %%i TCP %%j echo !TCP_Port! !TCP_Proc_Name! ) ECHO UDP協議: for /F "usebackq skip=4 tokens=2,4" %%i in (`"netstat -ano -p UDP"`) do ( call :Assoc %%i UDP %%j echo !UDP_Port! !UDP_Proc_Name! ) echo 按任意鍵退出 pause>nul :Assoc ::對%1(第一個參數)進行分割,將第二個參數傳給%%e。在本程序中,%1即為上面的%%i(形式為:IP:端口號) for /F "tokens=2 delims=:" %%e in ("%1") do ( set %2_Port=%%e ) :: 查詢PID等于%3(第三個參數)的進程,并將結果傳給變量?_Proc_Name,?代表UDP或者TCP; for /F "skip=2 usebackq delims=, tokens=1" %%a in (`"Tasklist /FI "PID eq %3" /FO CSV"`) do ( ::%%~a表示去掉%%a外面的引號,因為上述命令的結果是用括號括起來的。 set %2_Proc_Name=%%~a )
在這里大家只需要新建一個txt,復制上面代碼后修改后綴名為bat(本來為txt),然后右鍵以管理員身份運行就可以了。
運行結果:
后面會分享更多關于平時工作中用到的一些小技巧,感興趣的朋友可以關注下!!
每當應用程序想要通過網絡訪問自己時,它就會聲明一個 TCP/IP 端口,這意味著該端口不能被其他任何東西使用。那么如何檢查開放端口以查看哪些應用程序已經在使用它呢?
IP 地址指定網絡上的計算機或其他網絡設備。當一臺設備向另一臺設備發送流量時,IP 地址用于將該流量路由到適當的位置。一旦流量到達正確的位置,設備需要知道將流量發送到哪個應用程序或服務。這就是端口發揮作用的地方。
如果 IP 地址類似于一封郵件上的街道地址,則端口類似于該住所收到郵件的人的姓名。大多數情況下,您無需擔心端口。但有時,您可能會遇到一個應用程序設置為偵聽另一個應用程序已在使用的同一端口上的流量。在這種情況下,您需要識別已使用該端口的應用程序。
有多種方法可以判斷哪個應用程序鎖定了端口,本文將引導您了解幾種使用方法。
我們有兩個命令向您展示。第一個列出了活動端口以及使用它們的進程的名稱。大多數時候,該命令可以正常工作。但有時,進程名稱無法幫助您識別哪個應用程序或服務實際占用了端口。在這些時候,您需要列出活動端口及其進程標識符號,然后在任務管理器中查找這些進程。
首先,您需要以管理員模式打開命令提示符。點擊“開始”,然后在搜索框中鍵入“命令”。當您看到“命令提示符”出現在結果中時,右鍵單擊它并選擇“以管理員身份運行”,或單擊右側的“以管理員身份運行”。
在命令提示符處,鍵入以下文本,然后按 Enter:
netstat -ab
按 Enter 鍵后,結果可能需要一兩分鐘才能完全顯示,因此請耐心等待。滾動列表以查找端口(在本地 IP 地址右側的冒號后面列出),您將看到該行下列出的進程名稱。
例如,在這里,您可以看到端口 49902 被名為 picpick.exe 的進程占用。 PicPick 是我們系統上的圖像編輯器,因此我們可以假設該端口實際上是由定期檢查應用程序更新的進程占用的。
如果您要查找的端口號的進程名稱使您很難判斷相關應用程序是什么,您可以嘗試顯示進程標識符 (PID) 而不是名稱的命令版本。在命令提示符處鍵入以下文本,然后按 Enter:
netstat -aon
最右邊的一列列出了 PID,因此只需找到綁定到您要排除故障的端口的 PID。
接下來,右鍵單擊任務欄上的任何空白區域并選擇“任務管理器”,打開任務管理器。您也可以按 Ctrl+Shift+Esc。
如果您使用的是 Windows 8、10 或 11,請切換到任務管理器中的“詳細信息”選項卡。
在舊版本的 Windows 中,您將在“進程”選項卡上看到此信息。按“PID”列對進程列表進行排序,并找到與您正在調查的端口關聯的 PID。通過查看“描述”列,您也許可以詳細了解哪些應用程序或服務綁定了端口。
如果沒有,請右鍵單擊該進程并選擇“打開文件位置”。文件的位置可能會為您提供有關涉及哪個應用程序的線索。
到達那里后,您可以使用“結束進程”、“打開文件位置”或“轉到服務”選項來控制或停止該進程。