[Linux 셸 스크립트] 네트워크 - 062 간이 TCP 서버 띄우기
본문 바로가기
IT 이야기/Linux 셸 스크립트

[Linux 셸 스크립트] 네트워크 - 062 간이 TCP 서버 띄우기

by 찬찬이 아빠 2021. 4. 6.
반응형
  1. 사용 명령어

(1) nc

 

  2. 키워드 & 사용처

(1) 키워드

네트워크, 포트 번호, 방화벽, 확인, 데몬

 

(2) 사용처

시스템 구축 시 미들웨어 등을 아직 설치하지 않은 서버와 네트워크 개통을 확인하고 싶을 때 사용합니다.

 

  3. 실행 예제
$ ./port-httpd.sh
Connection from 192.168.2.5 port 8080 [tcp/webcache] accepted   <- 실행한 상태에서 다른 서버에서 nc 명령어로 패킷을 보냄

 

 

  4. 스크립트

#!/bin/sh

 

port=8080

nc -v -k -l $port               

 

 

  5. 해설

서버에서 셸 변수 port로 지정한 포트 번호로 TCP 접속을 받는 스크립트입니다. 네트워크 개통을 확인할 때 사용합니다.

 

nc 명령어는 TCP/UDP 패킷을 작성해서 다양한 확인이 가능합니다. 이전 61번 스크립트에서는 클라이언트 쪽에서 송신하는 패킷을 작성하기 위해 사용했습니다. nc 명령어는 다양한 기능이 있어서 이 예제처럼 서버 쪽에서 대기하는 간단한 데몬같이 동작하는 스크립트도 작성할 수 있습니다.

 

에서 nc 명령어의 세 가지 옵션 -v, -k, -l을 사용합니다.

-v 옵션은 verbose 모드(상세 모드)입니다. 접속이 있으면 메시지를 표시하므로 확인 목적으로 유용합니다.  -l 옵션은 듣기 모드로 실행합니다. 따라서 예전처럼 포트 8080에서 대기하는 프로세스가 실행할 수 있습니다.

 

-k옵션은 지속 옵션입니다. nc 명령어 듣기 모드는 한 번 접속이 이뤄지면 종료합니다. 네트워크 통신 확인은 몇 번이고 반복적으로 패킷을 보내므로 그때마다 종료된다면 곤란합니다. 따라서 접속이 유지되도록 -k 옵션을 사용합니다. 종료할 때는 Ctrl + C를 입력합니다.

 

이 예제를 실제로 이용할 때는 다음과 같습니다.

1. 네트워크 개통을 확인할 서버에서 이 예제 port-httpd.sh를 실행합니다.

2. 네트워크 개통을 확인하고, 서버에 예제61번 스크립트로 패킷을 보냅니다.

3. 네트워크 상태의 OK/NG를 판별합니다.

 

시스템을 구축하는데 물리 서버는 있지만 아직 미들웨어를 설치하지 않았거나 설정이끝나지 않았을 때 네트워크 부분을 우선 확인하고 싶다면 이 같은 예제로 간단한 데몬을 실행해서 개통 시험을 해보면 됩니다.

 

nc 명령어만으로도 실행 가능하지만 명령어에 익숙하지 않은 초보자라도 스크립트가 있으면 간단히 조작할 수 있고, 작업 실수를 줄이거나 작업 절차가 간단해지는 장점이 있습니다.

 

 

<주의사항>

Mac에서는 -v 옵션을 써도 접속이 있었는지를 알려주는 메시지가 출력되지 않습니다.

포트번호 1024 미만의 표준 포트(Well-knownport)에 바인드하려면 root 권한이 필요하므로 1024 미만의 포트를 확인할 때는 이 스크립트도 root 권한으로 실행해야 합니다.

 

 

참고서적 : 유닉스 리눅스 셸 스크립트 예제 사전

반응형

댓글