[Powershell] 포트 정보 조회

파워쉘(Powershell)을 이용한 포트 정보 조회

파워쉘을 이용하면 네트워크 연결 상태에 보다 효율적인 접근을 할 수 있습니다.

이전 명령 프롬프트(cmd)를 이용하면 아래와 같이 할 수 있습니다.

> netstat -anp tcp | findstr 8080

위의 정보는 TCP 연결중 8080 이 포함된 문자열을 검색하라는 뜻입니다.

TCP 연결 상태 조회

Get-NETTcpConnection cmdlet 을 이용하면 현재 운영체제에서 TCP로 연결된 목록을 출력할 수 있습니다.

PS> Get-NetTCPConnection | Select-Object -First 10

LocalAddress                        LocalPort RemoteAddress                       RemotePort State       AppliedSetting OwningProcess
------------                        --------- -------------                       ---------- -----       -------------- -------------
::                                  60625     ::                                  0          Bound                      15984
::                                  60357     ::                                  0          Bound                      21468
::1                                 60625     ::1                                 3306       Established Internet       15984
::                                  49672     ::                                  0          Listen                     708
::                                  49668     ::                                  0          Listen                     700
::                                  49667     ::                                  0          Listen                     2384
::                                  49666     ::                                  0          Listen                     1388
::                                  49665     ::                                  0          Listen                     1192
::                                  49664     ::                                  0          Listen                     600
::                                  17500     ::                                  0          Listen                     18324

위의 명령은 TCP연결중에서 10개의 데이터만 출력하라는 뜻입니다.

특정 포트 정보 조회

그렇다면 TCP 연결중에 원하는 포트만 찾고 싶은 경우에는 다음과 같이 할 수 있습니다.

PS> Get-NetTCPConnection | Where-Object {$_.LocalPort -eq 3306 -and $_.State -eq 'Listen'}

LocalAddress                        LocalPort RemoteAddress                       RemotePort State       AppliedSetting OwningProcess
------------                        --------- -------------                       ---------- -----       -------------- -------------
::                                  3306      ::                                  0          Listen                     8248

포트 정보를 이용해서 프로세스 정보 조회하기

가끔 서버를 설정하다보면 포트 충돌이 발생하는 경우를 확인할 수 있습니다. 그럴 경우 이전에 해당 포트를 사용하는 프로세스를 검색하고 검색된 프로세스를 죽이는 방식으로 처리를 하곤 합니다.

아래의 명령을 통하면 해당 포트를 사용중인 프로세스가 어떤 프로세스인지 확인할 수 있습니다.

PS> $pid3306 =  Get-NetTCPConnection | Where-Object {$_.LocalPort -eq 3306 -and $_.State -eq 'Listen'} | select-object -ExpandProperty owningprocess

PS>  Get-Process | Where-Object {$_.ID -eq $pid3306}
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    230      22   445112      79396       0.20   8248   5 mysqld

결과는 3306 포트를 사용중인 프로세스는 mysqld 라는 프로세스입니다.

아직 파워쉘(Powershell)을 사용한지 오래되지 않았지만 확실하게 느낄 수 있는 것은 Batch 프로그램 보다는 효율적인것 같습니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중