사실 통신 확인방법으로 대중적인 방법은 Telnet, NC(ncat) 방법이 있다
다만 대부분 통신 확인을 요청하는 경우는 초기 구성단계 또는 통신 장애 상황이다
꼭 급하게 필요할 때 Telnet Client, NC 패키지가 설치가 안되어있다면... 참 난감하다
이제 소개할 내용은 BASH 쉘의 기본 탑재 기능 중의 하나인 /dev/tcp이다
BASH 쉘을 사용한다면 별도 패키지 설치 없이 대상 서버의 포트 통신 여부를 확인할 수 있다
사용방법은 매우 간단하다
echo > /dev/tcp/[대상IP]/[포트번호]
...끝
정상적으로 TCP 통신이 된다면 아무 출력 없이 바로 다음 프롬프트로 이동한다
통신이 정상적으로 이루어지지 않는다면 응답이 늦거나, 연결 거부(Connection refused) 메세지를 출력한다
*/dev/udp/[대상IP]/[포트번호] 또한 동작은 하지만 UDP 프로토콜 특성으로 응답이 오지 않으므로 구간 사이 방화벽에 정보를 남기는 정도로 사용할 수 있다
첫 번째 정상 통신될 경우 슉슉 넘어간다
두 번째 정상 통신이 안될 경우 Connection refused 출력
세 번 때 UDP 통신은 안되지만(해당 호스트에서 리슨하지 않음) 첫 번째처럼 슉슉 넘어간다
.. 잠이 오지 않아 간단하게 응용하여 써먹을 수 있는 스크립트를 작성해 보았다!
이름은 바로바로 포트 체크 스크립트!
#!/bin/bash
#######IP & Port Info########
echo "Insert Destination IP"
read IP
echo "Insert Port Number"
read Port
#######Port Check Task########
2>/dev/null > /dev/tcp/$IP/$Port
echo $? > result
########Result Print##########
RESULT=`cat $PWD/result`
if [ ${RESULT} -eq 0 ] ; then
echo "Network Port is Open!"
else
echo "Network Port is Close!"
fi
rm -rf $PWD/result
명령어 자체가 간단하지만 모두가 서버 엔지니어가 아니며 부탁하여 포트를 확인해야 하는 경우가 있어 만들었다(허접ㅠ)
1. IP & Port Info에서 대상 서버의 IP정보와 통신 확인을 하고자 하는 포트번호를 입력받는다
2. 변수 처리된 정보를 통해 결과값을 저장한다 0=통신됨, 1=통신안됨
*echo $? 명령어는 직전 실행 명령어의 정상/비정상 종료의 값을 출력한다
*표준 출력을 2>/dev/null 지정하여 스크립트 수행 시 에러 메세지를 지워 깔끔하게 보이도록 함!
3. 마지막으로 정상/비정상 값을 토대로 포트 통신 여부를 출력해준다, 그리고 남겼던 결과값 파일 삭제로 마무리!
끝
'IT Info > Linux' 카테고리의 다른 글
리눅스 최적화 - Linux Tunning (0) | 2023.10.23 |
---|---|
CentOS 9 개요 및 설치 방법 (0) | 2022.03.25 |
Openssl 버전 업그레이드 방법 (0) | 2022.03.24 |
라즈베리파이 Linux 설치 방법 [CentOS] (0) | 2021.12.04 |
Linux 아파치(httpd) Tomcat mod_jk 연동 방법 [RHEL, CentOS] (0) | 2021.04.11 |
댓글