728x90
다른 서버의 port 에 연결이 가능한지 테스트하는 툴을 보통 nc, telnet, curl 등을 확인 이용하는데, 컨테이너 이미지를 최소화한 OS 를 사용하다보면 아무 것도 설치가 안되어있을수가 있다. 필요한 툴을 다운받아서 해도 되겠지만, 간단하게 Bash 의 /dev/tcp 가상 파일 리다이렉션 기능을 사용해서 TCP 소켓 기능을 사용할 수가 있다. (Bash 전용 기능이지만 보통은 Bash 는 기본 설치될 거라 예상한다. 이거마저 없다면은...)
# 192.168.1.1/80 번 포트 테스트 예시
timeout 2 bash -c '</dev/tcp/192.168.1.1/80' && echo "OPEN" || echo "CLOSED"
bash -c ' 명령어' : -c 옵션으로 새로운 Bash 쉘을 실행한다.
</dev/tcp/192.168.1.1/80 의 의미: 192.168.1.1 의 80 번 포트로 TCP handshake 을 해서 연결 성공하면 리턴 코드가 0(실패한다면 1, 시간초과는 124) 이 반환된다. 그리고 입력 리다이렉션인 < 가 반드시 필요하다.
&& echo "OPEN" : 앞의 명령어 결과가 성공 이면 AND 연산자(&&) 로 echo "OPEN" 이 실행된다.
|| echo "OPEN" : 앞의 명령어 결과가 실패(0 이 아닌값) 이면 AND 연산자(&&) 로 echo "CLOSED" 이 실행된다.
# timeout 2 bash -c '</dev/tcp/172.27.1.123/443' && echo "OPEN" || echo "CLOSED"
CLOSED
'Engineering > Docker' 카테고리의 다른 글
| OpenLens 에 shell 기능 추가 (node-pod-menu) (0) | 2026.08.04 |
|---|---|
| 컨테이너에서 패키지 설치시 "Not Found" 에러 발생시 (0) | 2026.05.07 |
| 로컬 PC 에서 쿠버네티스 Pod 로 파일 복사 (0) | 2025.10.02 |
| docker pull tls handshake timeout 해결 (0) | 2025.02.18 |
| docker 빌드시 패키지 오류 해결 (0) | 2024.08.30 |