> 네트워크 관리 > curl

curl: HTTP 요청 및 파일 전송 (자동 모드)

`curl`은 다양한 프로토콜(HTTP, HTTPS, FTP 등)을 사용하여 데이터를 전송하는 강력한 명령줄 도구입니다. 특히, `--silent` 또는 `-s` 옵션은 진행률 표시줄이나 오류 메시지 등 불필요한 출력을 억제하여 스크립트나 자동화된 작업에서 깔끔한 출력을 얻을 때 유용합니다. 사용자께서 문의하신 `curl-silent`는 독립적인 명령어가 아니며, `curl` 명령어에 `-s` 옵션을 붙여 사용하는 방식을 지칭하는 경우가 많습니다.

개요

`curl`은 웹 서버와 통신하거나 파일을 다운로드/업로드할 때 사용되는 다목적 도구입니다. `-s` (또는 `--silent`) 옵션은 `curl`의 기본 동작인 진행률 표시줄, 오류 메시지, 기타 진단 정보를 숨겨서 출력을 최소화합니다. 이는 특히 스크립트에서 웹 페이지의 내용만 가져오거나 API 응답을 처리할 때 매우 유용합니다.

주요 특징

  • 다양한 프로토콜 지원 (HTTP, HTTPS, FTP, FTPS, SCP, SFTP 등)
  • 데이터 다운로드 및 업로드
  • HTTP 헤더, 쿠키, 인증 등 고급 기능 지원
  • 스크립트 친화적인 자동 모드 (`-s` 옵션)

주요 옵션

`curl`은 매우 많은 옵션을 제공하지만, 여기서는 자동 모드(`-s`)와 함께 자주 사용되는 옵션들을 소개합니다.

자동 모드 및 출력 제어

요청 방식 및 데이터

생성된 명령어:

명령어를 조합해 보세요.

설명:

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

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

사용 예시

`curl -s`를 활용하여 다양한 네트워크 작업을 수행하는 예시입니다.

웹 페이지 내용 자동 모드로 가져오기

curl -s https://example.com

지정된 URL의 HTML 내용을 진행률 표시줄 없이 터미널에 출력합니다.

오류 발생 시에만 메시지 표시

curl -sS https://nonexistent.example.com

정상적인 경우 아무것도 출력하지 않지만, 오류가 발생하면 오류 메시지를 표시합니다.

파일을 자동 모드로 다운로드하여 저장

curl -s -o downloaded_file.zip https://example.com/some_file.zip

원격 파일을 다운로드하여 `downloaded_file.zip`으로 저장합니다. 진행률은 표시되지 않습니다.

JSON 데이터를 POST 요청으로 전송 (자동 모드)

curl -s -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/data

JSON 데이터를 HTTP POST 요청으로 전송하고, 응답을 자동 모드로 받습니다.

리다이렉션 추적 및 자동 모드

curl -sL http://shorturl.at/abcde

리다이렉션이 있는 URL에 대해 자동으로 새 위치를 따라가며 최종 응답을 자동 모드로 가져옵니다.

팁 & 주의사항

`curl -s` 사용 시 유용한 팁과 주의할 점입니다.

`curl-silent`에 대한 오해

`curl-silent`는 독립적인 명령어가 아니며, `curl -s`를 의미하는 관용적인 표현입니다. 스크립트 등에서 `curl-silent`라는 명령어를 직접 실행하면 'command not found' 오류가 발생할 수 있습니다.

  • 실제 명령어: `curl -s`
  • 오해의 소지: `curl-silent`라는 별도의 명령어 존재

`-s`와 `-S`의 조합

자동화된 스크립트에서 `-s`를 사용하면 오류 발생 시에도 아무런 출력이 없어 문제 해결이 어려울 수 있습니다. 이때 `-S` 옵션을 함께 사용하면, 정상적인 경우에는 침묵하지만 오류가 발생했을 때만 오류 메시지를 표시하여 디버깅에 큰 도움이 됩니다.

  • `curl -s`: 모든 출력 억제 (오류 포함)
  • `curl -sS`: 정상 시 침묵, 오류 시 오류 메시지 출력

종료 코드 확인

`curl`은 작업 성공 여부를 종료 코드(exit code)로 알려줍니다. 스크립트에서는 `$?` 변수를 통해 이 코드를 확인하여 오류를 처리하는 것이 좋습니다. `0`은 성공을 의미하며, 다른 값은 특정 오류를 나타냅니다.

기본 탑재 여부

`curl`은 대부분의 최신 리눅스 배포판에 기본적으로 설치되어 있습니다. 만약 설치되어 있지 않다면, `sudo apt install curl` (Debian/Ubuntu) 또는 `sudo yum install curl` (CentOS/RHEL) 명령어로 설치할 수 있습니다.


관련 명령어

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


동일 카테고리 명령어