행위

리눅스 서버에서 사용 중인 포트 목록 출력하기

라이언의 꿀팁백과

Ryanyang (토론 | 기여)님의 2022년 7월 9일 (토) 15:19 판 (→‎netstat -tnlp)

아래와 같이 명령어를 입력하면 깔끔하게 현재 서버에서 사용 중인 TCP 포트 번호 목록과 프로그램명을 볼 수 있다.


netstat -tnlp | grep -v 127.0.0.1 | sed 's/:::/0 /g' | sed 's/[:\/]/ /g' | awk '{print $5"\t"$10}' | sort -ug


서버에서 사용하는 포트 번호 및 프로그램 목록.png


위 명령어를 하나씩 풀어보자.

1 netstat -tnlp

TCP 프로토콜을 사용하는 소켓 목록을 IP 주소, PID 또는 프로그램 이름과 함께 출력한다.

옵션 간략한 설명 상세한 설명
-t TCP TCP 만 출력
-n don't resolve name 숫자로 되어있는 주소를 사람이 이해하기 쉬운 도메인 이름으로 변환하지 않음 (즉, PTR 또는 리버스 도메인 조회)
-l display listening server sockets 현재 서버에서 열려있는 소켓 목록을 보여주는 옵션
-p display PID/program name for sockets 포트와 관계 있는 프로그램 이름 및 PID(프로세스 아이디)를 출력

상기 명령어를 실행하면 아래와 같은 화면을 볼 수 있다.


Netstat -tnlp.png

2 grep -v 127.0.0.1

127.0.0.1 을 포함하는 행(line)은 검색 결과에서 제외한다.

옵션 간략한 설명 상세한 설명
-v select non-matching lines 옵션 뒤에 나오는 문자열을 포함하지 않는 행만 출력

3 sed 's/:::/0 /g'

sedstream editor for filtering and transforming text 이다. 위 명령어는 스트림(stream)에 입력한 ::: 이라는 문자열을 0 으로 변경하라는 명령어다.


Sed.png

4 sed 's/[:\/]/ /g'

IP 주소 뒤에 있는 :/ 을 공백으로 변경한다.


Sed .png

5 awk '{print $5"\t"$10}'

awk 는 pattern scanning and processing language 다. 문장이 tab 으로 구분되어 있는 경우에 가장 좌측은 1번째, 그 다음 TAB 에 있는 항목은 2번째로 구분할 수 있다. 위 명령어는 결국 5번째 항목인 Address, Program 에 해당하는 내용을 출력한다.


Awk.png

6 sort -ug

sort 명령어는 단어 그대로 정렬을 하는 리눅스 프로그램이다.

옵션 간략한 설명 상세한 설명
-u - 중복된 행을 제거한다.
-g compare according to general numeric value 숫자 오름차순으로 정렬한다

7 참고사항

리눅스에서 파이프(|) 는 좌측에 있는 프로세스(프로그램)의 출력을 우측에 있는 프로세스(프로그램)의 입력으로 전달하는 기능을 한다.