Linux / 명령어 / curl - URL 요청과 HTTP 응답 확인

curl은 URL로 데이터를 요청하거나 전송하는 도구입니다. HTTP 응답 헤더 확인, API 호출, 파일 다운로드 등 여러 작업에 사용하며, 기본적으로 응답 본문을 표준 출력에 보여 줍니다.

curl 명령어란?

HTTP 오류 상태가 반환돼도 기본 curl의 종료 상태는 성공일 수 있습니다. 스크립트에서 4xx·5xx를 실패로 처리하려면 --fail 또는 상황에 따라 --fail-with-body를 사용하세요. -L은 리디렉션을 따라가며 -o는 결과를 지정 파일에 저장합니다.

기본 문법

curl [옵션] URL

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man curl으로 현재 시스템의 설명을 확인하세요.

사용 예제

응답 헤더 확인

서버가 HEAD 요청을 지원하면 헤더와 HTTP 상태를 볼 수 있습니다.

curl -I https://example.com/

본문과 상태 확인

리디렉션을 따르면서 HTTP 오류 상태를 실패로 취급합니다.

curl -fL https://example.com/

파일에 저장

응답 본문을 현재 디렉터리의 지정 파일에 기록합니다.

curl -fL -o example.html https://example.com/

HTTP 상태만 확인한 결과

curl은 URL 요청을 보내고 응답을 확인합니다. 다음은 본문을 버리고 HTTP 상태 코드만 표시하므로 자동화에서 200·404·500 같은 결과를 구분하기 쉽습니다.

curl -sS -o /dev/null -w '%{http_code}\n' https://example.com

정상 응답을 받은 시점의 예시 출력:

200

200은 HTTP 응답을 받았다는 뜻이지 페이지 내용이 예상과 같다는 증거는 아닙니다. 네트워크 오류에서는 상태 코드가 000이거나 오류가 별도로 표시될 수 있습니다. 리디렉션 최종 목적지를 따라가려면 -L을 사용하고, 인증 토큰을 명령행에 직접 적을 때는 셸 기록·프로세스 목록 노출을 주의하세요.

curl은 HTTP 4xx·5xx 응답을 받아도 기본적으로 전송 자체가 성공했다면 종료 코드가 0일 수 있습니다. 스크립트에서 HTTP 오류를 실패로 취급하려면 --fail 또는 필요에 따라 --fail-with-body를 검토하세요. 비밀 토큰을 포함한 상세 출력은 로그에 남기기 전에 가려야 합니다.

주요 옵션과 형식

옵션·형식 설명
-I HEAD 요청으로 응답 헤더를 확인합니다.
-L 리디렉션을 따라갑니다.
-o 파일 응답을 지정한 파일에 저장합니다.
-O 원격 파일 이름으로 저장합니다.
-f HTTP 400 이상을 오류로 취급하고 본문 출력은 억제합니다.
-H 헤더 요청 헤더를 지정합니다.

사용할 때 주의할 점

서버가 HEAD를 거부할 수 있으므로 curl -I 실패만으로 URL이 없는 것으로 판단하지 말고 GET으로 다시 확인하세요. 불특정 URL의 스크립트를 바로 셸에 연결하지 마세요. 인증 토큰을 명령줄에 직접 넣으면 셸 기록이나 프로세스 목록에 남을 수 있고, -k는 인증서 검증을 꺼 보안을 낮춥니다.

자주 묻는 질문

curl이 404를 받았는데 명령이 성공한 것처럼 보이는 이유는?

기본적으로 HTTP 상태와 curl 자체의 전송 성공 여부를 별도로 취급하기 때문입니다. 스크립트에서는 -f 또는 --fail-with-body를 검토하세요.

공식 문서

옵션의 정확한 동작과 구현별 차이는 curl 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux unxz 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

Linux ssh-keygen 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux apt 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / tracepath - 네트워크 경로와 경로 MTU 확인

Linux / 명령어 / tracepath - 네트워크 경로와 경로 MTU 확인

Linux tracepath 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 리눅스 디렉토리 구조와 주요 디렉토리별 용도

Linux / 리눅스 디렉토리 구조와 주요 디렉토리별 용도

리눅스의 /etc, /var, /usr, /home, /proc, /dev 등 주요 디렉토리별 용도와 이름의 의미를 정리합니다. 리눅스 파일시스템 구조를 처음 배우거나 서버 관리에 필요한 디렉토리를 확인할 때 참고할 수 있습니다.

Linux / 명령어 / ssh-copy-id - SSH 공개키를 원격 계정에 등록

Linux / 명령어 / ssh-copy-id - SSH 공개키를 원격 계정에 등록

Linux ssh-copy-id 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / wc - 줄·단어·문자 수 계산

Linux / 명령어 / wc - 줄·단어·문자 수 계산

Linux wc 명령어로 줄·단어·바이트·문자 수를 확인하는 방법을 설명합니다. 개행 기준의 줄 수, -c와 -m 차이, 여러 파일 합계와 안전한 파이프 활용 예제를 정리합니다.

Linux / 명령어 / ip - 인터페이스·주소·라우팅 상태와 설정

Linux / 명령어 / ip - 인터페이스·주소·라우팅 상태와 설정

Linux ip 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 네트워크 / IP 확인하는 방법

Linux / 네트워크 / IP 확인하는 방법

Linux에서 ip address와 ip route get으로 인터페이스 주소와 실제 출발지 IP를 확인하는 방법을 설명합니다. 사설·공인 IP, IPv4·IPv6와 컨테이너 환경의 차이도 정리합니다.

Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

find와 locate로 파일을 찾고 which, whereis, type으로 명령의 위치와 해석 방식을 확인합니다. 실시간 검색과 색인 검색의 차이도 짚습니다.