> 네트워크 관리 > curl

curl: URL 기반 데이터 전송/테스트 만능 툴

URL을 사용해 서버와 데이터를 주고받는 강력한 커맨드라인 도구입니다. HTTP/HTTPS, FTP/FTPS, SFTP 등 다양한 프로토콜을 지원하며 API 테스트, 파일 업/다운로드, 트러블슈팅에 널리 쓰입니다.

curl이란 무엇인가?

curl은 'Client URL'의 약자로, URL 문법을 사용해 데이터를 전송/수신하는 CLI 유틸리티입니다. 웹 개발, API 테스팅, CI/CD 자동화, 운영 트러블슈팅 등 광범위한 영역에서 사용됩니다.

핵심 기능

  • 다양한 프로토콜: HTTP/HTTPS, FTP/FTPS, SFTP, LDAP, SMTP/SMTPS 등(빌드 옵션에 따라 다름).
  • HTTP 제어: 메소드, 헤더, 쿠키, 압축, HTTP/2, 리다이렉트, 타임아웃, 재시도 등 세밀 제어.
  • 업/다운로드: 파일 다운로드(-o/-O), 이어받기(-C -), 폼 업로드(-F), 단일 파일 업로드(-T).
  • 보안: TLS 인증서 검증(기본 활성), 신뢰루트 지정(--cacert), 클라이언트 인증서(--cert/--key).
  • 자동화 친화성: 조용한 출력(-s), 실패 시 종료(-f), 형식화 출력(-w), 스크립트에 적합.

주요 옵션 (Shell)

가장 기본적으로 요청 대상 URL이 필요합니다. 여러 URL을 공백으로 나열하거나 파일(@file)에서 읽을 수도 있습니다.

1. 기본 요청 및 다운로드

2. HTTP 메소드 및 데이터 전송

3. 헤더, 인증, 쿠키

4. 출력 제어/신뢰성

5. 보안/TLS & 프록시/진단

6. 프로토콜/버전

7. 도움말/버전

생성된 명령어:

명령어를 조합해 보세요.

설명:

`curl` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 시나리오 예시 (Shell)

실무에서 자주 쓰는 요청 패턴을 모았습니다.

웹페이지 내용 출력

curl https://example.com

기본 GET 요청.

파일 다운로드(리다이렉트 추적)

curl -O -L https://wordpress.org/latest.zip

-O 원본 파일명, -L 리다이렉트 추적.

JSON GET + 예쁘게 보기

curl -s https://api.github.com/users/google | jq

jq로 파싱/가독성 향상.

JSON POST

curl -X POST -H "Content-Type: application/json" -d '{"username":"test"}' https://api.example.com/users

헤더와 본문 지정.

폼 파일 업로드(multipart)

curl -F "upload_file=@./my-image.png" https://example.com/upload

필드명=upload_file, 파일 경로를 @로 지정.

Bearer 토큰 인증

curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/me

Authorization 헤더 사용.

응답 헤더만 확인

curl -I https://google.com

서비스 상태/캐시 진단에 유용.

실패 시 비제로 종료 + 조용하게

curl -sSf https://example.com/health

-sS -f 조합: 스크립트 친화적.

타임아웃 + 재시도

curl --connect-timeout 5 --max-time 20 --retry 3 --retry-all-errors https://example.com/api

불안정한 네트워크 대응.

특정 IP로 테스트(--resolve)

curl --resolve 'api.example.com:443:203.0.113.10' https://api.example.com/status

DNS 우회 테스트(SNI 유지).

설치

대부분 기본 제공되며, 없을 경우 패키지로 설치합니다.

Debian/Ubuntu

sudo apt update && sudo apt install -y curl

RHEL/CentOS/Fedora

sudo dnf install -y curl

Arch Linux

sudo pacman -S --needed curl

팁 & 주의사항

유용한 팁

  • curl vs wget: wget은 대용량/재귀 다운로드에 강하고, curl은 API 상호작용/세밀 제어에 강함.
  • 따옴표: -d/-H에 JSON/특수문자가 있으면 작은따옴표로 감싸기 권장.
  • 압축 응답: --compressed를 사용하면 서버가 지원 시 자동 압축 해제되어 전송량 감소.
  • 프록시: HTTP 프록시는 -x, SOCKS5는 --socks5로 설정.
  • 보안 주의(-k): -k/--insecure는 개발·테스트 한정 사용. 운영에서는 신뢰 루트 설정 권장(--cacert).

관련 명령어

기능적으로 유사하거나 함께 자주쓰이는 명령어들입니다.



동일 카테고리 명령어