TECH 으로 돌아가기
TECH HACKER NEWS 5일 전 1분 읽기 57 READS

curl 없이 HTTP 요청을? Bash /dev/tcp의 숨은 마법

최소 구성 컨테이너나 복구 환경에서 curl도 wget도 없을 때 막막했던 경험, 한 번쯤 있으실 겁니다. 사실 Bash 자체가 답을 가지고 있습니다. /dev/tcp/호스트/포트 는 실제 디바이스 파일이 아니라 Bash에 내장된 가상 경로로, 리다이렉션만으로 TCP 연결을 열 수 있습니다.

핵심은 세 줄입니다. exec 3<>/dev/tcp/example.com/80 으로 소켓을 파일 디스크립터에 연결하고, printf로 'GET / HTTP/1.1' 같은 요청을 >&3 으로 써넣은 뒤, cat <&3 으로 응답을 읽습니다. 즉 HTTP 프로토콜을 손으로 직접 말하는 셈이죠.

주의할 점도 명확합니다. 이 기능은 Bash 전용이라 sh나 dash에서는 동작하지 않고, TLS를 지원하지 않아 HTTPS는 그대로 쓸 수 없습니다. 또 일부 배포판은 해당 옵션을 빼고 컴파일하기도 합니다.

실무 가치는 디버깅과 비상 상황에 있습니다. 외부 도구가 전혀 없는 환경에서 헬스체크나 간단한 API 호출을 셸만으로 해결할 수 있고, HTTP의 작동 원리를 몸으로 이해하게 됩니다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://mareksuppa.com/til/bash-dev-tcp-http-without-curl/
SHARE
처리 중...