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 권한으로 실행해야 합니다.
참고서적 : 유닉스 리눅스 셸 스크립트 예제 사전
'IT 이야기 > Linux 셸 스크립트' 카테고리의 다른 글
[Linux 셸 스크립트] 네트워크 - 064 셸 스크립트로 CGI 실행하기 (0) | 2021.04.06 |
---|---|
[Linux 셸 스크립트] 네트워크 - 063 ftp로 자동 내려받기, 자동 올리기 (0) | 2021.04.06 |
[Linux 셸 스크립트] 네트워크 - 061 서버의 특정 포트가 열려 있는지 확인하는 스크립트 작성하기 (0) | 2021.04.06 |
[Linux 셸 스크립트] 네트워크 - 060 IP 주소로 호스트명 얻기 (0) | 2021.04.06 |
[Linux 셸 스크립트] 네트워크 - 059 호스트명으로 IP 주소 취득하기 (0) | 2021.03.31 |
댓글