SW/리눅스

Linux : Curl 명령어 예시, 예제, 방법

얇은생각 2020. 11. 24. 07:30
반응형

curl은 사용자 상호 작용 없이 작동하도록 설계된 서버에서 또는 서버로 데이터를 전송하기 위한 명령줄 유틸리티입니다. curl을 사용하면 HTTP, HTTPS, SCP , SFTP 및 FTP 등 지원되는 프로토콜 중 하나를 사용하여 데이터를 다운로드하거나 업로드할 수 있습니다. curl은 전송을 재개하고 대역폭을 제한하며 프록시 지원, 사용자 인증 등을 수행할 수 있는 다양한 옵션을 제공합니다.

이 튜토리얼에서는 가장 일반적인 curl 옵션에 대한 실제 예와 자세한 설명을 통해 컬 도구를 사용하는 방법을 보여드리겠습니다.

 

 

Linux : Curl 명령어 예시, 예제, 방법

 

 

Curl 설치

현재 대부분의 Linux 배포 환경에는 curl 패키지가 미리 설치되어 있습니다. 

시스템에 Curl 패키지가 설치되어 있는지 확인하려면 콘솔을 열고 curl을 입력한 다음 Enter 키를 누릅니다. Curl이 설치된 경우 시스템에서 컬을 인쇄합니다. 자세한 내용을 보려면 'curl --help' 또는 'curl --manual'을 사용하십시오. 그렇지 않으면 curl 명령어를 찾을 수 없습니다. 

Curl이 설치되지 않은 경우 배포의 패키지 관리자를 사용하여 Curl을 쉽게 설치할 수 있습니다.

 

 

 

Ubuntu 및 Debian에 Curl을 설치

sudo apt update
sudo apt install curl

 

 

 

CentOS 및 Fedora에 Curl을 설치

sudo yum install curl

 

 

 

Curl 사용법

curl 명령의 구문은 다음과 같습니다.

curl [options] [URL...]

 

 

가장 간단한 형태로 옵션 없이 호출될 경우, Curl은 지정된 리소스를 표준 출력에 표시합니다.

 

예를 들어 example.com 홈페이지를 검색하려면 다음을 실행합니다.

curl example.com

 

 

이 명령은 터미널 창에 example.com 홈페이지의 소스 코드를 인쇄합니다.

프로토콜을 지정하지 않은 경우, curl은 사용할 프로토콜을 추측하려고 시도하며, 이 프로토콜은 HTTP로 기본 설정됩니다.

 

 

 

출력을 파일에 저장

curl 명령의 결과를 저장하려면 -o 또는 -O 옵션을 사용합니다.

 Lowercase -o는 미리 정의된 파일 이름을 사용하여 파일을 저장합니다. 아래 예에서는 vue-v2.6.10.js입니다.

curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js

 

 

대문자 -O는 파일을 원래 파일 이름으로 저장합니다.

curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js

 

 

 

여러 파일을 다운로드

여러 파일을 한 번에 다운로드하려면 여러 -O 옵션과 다운로드하려는 파일의 URL을 차례로 사용합니다.

다음 예에서는 Arch Linux 및 Debian ISO 파일을 다운로드합니다.

curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso  \
     -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso

 

 

 

다운로드를 다시 시작

-C - 옵션을 사용하여 다운로드를 재개할 수 있습니다. 이 기능은 대용량 파일을 다운로드하는 동안 연결이 끊긴 경우 유용하며 처음부터 다운로드를 시작하는 대신 이전 파일을 계속할 수 있습니다.

예를 들어 다음 명령을 사용하여 Ubuntu 18.04 ISO 파일을 다운로드하는 경우입니다.

curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

 

 

그리고 갑자기 연결이 끊기면 다음을 사용하여 다운로드를 재개할 수 있습니다.

curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

 

 

 

URL의 HTTP 헤더를 가져오기

HTTP 헤더는 사용자 에이전트, 내용 유형 및 인코딩과 같은 정보를 포함하는 콜론 구분 키 값 쌍입니다. 헤더는 요청 또는 응답과 함께 클라이언트와 서버 간에 전달됩니다.

-I 옵션을 사용하여 지정된 리소스의 HTTP 헤더만 가져옵니다.

curl -I --http2 https://www.ubuntu.com/

 

 

 

웹 사이트가 HTTP/2를 지원하는지 테스트

특정 URL이 새 HTTP/2 프로토콜을 지원하는지 확인하려면 -I와 함께 HTTP 헤더를 --http2 옵션과 함께 가져옵니다.

curl -I --http2 -s https://linuxize.com/ | grep HTTP

 

 

-s 옵션은 curl을 무음(조용)으로 실행하고 진행률 미터와 오류 메시지를 숨깁니다.

원격 서버가 HTTP/2를 지원하는 경우, curl은 HTTP/2.0 200을 인쇄합니다.

HTTP/2 200

 

 

그렇지 않으면 응답은 HTTP/1.1 200입니다.

HTTP/1.1 200 OK

 

 

Curl버전 7.47.0 이상이 있는 경우 HTTP/2는 기본적으로 모든 HTTPS 연결에 대해 사용 가능하므로 --http2 옵션을 사용할 필요가 없습니다.

 

 

 

리디렉션을 따르기

기본적으로 컬은 HTTP 위치 머리글을 따르지 않습니다.

google.com의 non-ww 버전을 검색하려고 하면 페이지의 원본을 가져오는 대신 www 버전으로 리디렉션됩니다.

curl google.com

 

 

-L 옵션은 컬이 최종 대상에 도달할 때까지 모든 리디렉션을 따르도록 지시합니다.

curl -L google.com

 

 

 

User-에이전트를 변경

경우에 따라 파일을 다운로드할 때 방문자 장치 및 브라우저에 따라 사용자 에이전트 컬을 차단하거나 다른 내용을 반환하도록 원격 서버를 설정할 수 있습니다.

이런 경우 다른 브라우저를 에뮬레이트하려면 -A 옵션을 사용합니다.

예를 들어 Firefox 60을 에뮬레이트하는 경우 다음을 사용합니다.

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/

 

 

 

최대 전송 속도를 지정

--limit-rate 옵션을 사용하면 데이터 전송 속도를 제한할 수 있습니다.

값은 바이트, k 접미사로 킬로바이트, m 접미사로 메가바이트, g 접미사로 기가바이트로 표현할 수 있습니다.

다음 예제에서는 이동 바이너리를 다운로드하고 다운로드 속도를 1MB로 제한합니다.

curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

 

 

이 옵션은 컬이 사용 가능한 모든 대역폭을 소비하는 것을 방지하는 데 유용합니다.

 

 

 

FTP를 통해 파일을 전송

curl로 보호된 FTP 서버에 액세스하려면 -u 옵션을 사용하고 아래 그림과 같이 사용자 이름과 암호를 지정합니다.

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

 

 

로그인하면 사용자의 홈 디렉토리에 있는 모든 파일과 디렉터리가 나열됩니다.

다음 구문을 사용하여 FTP 서버에서 단일 파일을 다운로드할 수 있습니다.

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz

 

 

파일을 FTP 서버에 업로드하려면 업로드할 파일 이름 뒤에 -T를 사용합니다.

curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

 

 

 

쿠키를 보내기

원격 리소스에 액세스하거나 문제를 디버깅하기 위해 특정 쿠키를 사용하여 HTTP 요청을 해야 하는 경우도 있습니다.

기본적으로 Curl이 있는 리소스를 요청할 때 쿠키는 전송되거나 저장되지 않습니다.

서버로 쿠키를 보내려면 -b 스위치 다음에 쿠키 또는 문자열이 들어 있는 파일 이름을 사용합니다.

예를 들어 Oracle Java JDK rpm 파일 jdk-10.0.2_192-x64_bin.rpm을 다운로드합니다. 값을 가진 oraclelicense라는 쿠키를 전달해야 합니다.

curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm

 

 

 

프록시를 사용

curl은 HTTP, HTTPS 및 SOCKS를 비롯한 다양한 유형의 프록시를 지원합니다. 프록시 서버를 통해 데이터를 전송하려면 -x(--proxy) 옵션을 선택한 다음 프록시 URL을 사용합니다.

다음 명령은 192.168.44.1 포트 8888에서 프록시를 사용하여 지정된 리소스를 다운로드합니다.

curl -x 192.168.44.1:8888 http://linux.com/

 

 

프록시 서버에 인증이 필요한 경우 -U(--proxy-user) 옵션을 사용하고 사용자 이름과 암호를 콜론(user:password)으로 구분합니다.

curl -U username:password -x 192.168.44.1:8888 http://linux.com/

 

 

 

결론

curl은 원격 호스트에서 또는 원격 호스트로 데이터를 전송할 수 있는 명령줄 도구입니다. 이 기능은 문제 해결, 파일 다운로드 등에 유용합니다.

이 튜토리얼에 표시된 예는 간단하지만 가장 많이 사용되는 컬 옵션을 보여 주며 컬 명령의 작동 방식을 이해하는 데 도움이 됩니다. 

반응형