행위

"Curl 사용법"의 두 판 사이의 차이

DB CAFE

(파일이용 로그인)
(Curl 옵션 (파라미터))
19번째 줄: 19번째 줄:
 
curl example.com
 
curl example.com
 
</source>  
 
</source>  
 +
==== 기본 파라미터 ====
 +
<source lang=shell>
 +
$ curl --help
 +
Usage: curl [options...] <url>
 +
-d, --data <data>          HTTP POST data
 +
-f, --fail                Fail fast with no output on HTTP errors
 +
-h, --help <category>      Get help for commands
 +
-i, --include              Include protocol response headers in the output
 +
-o, --output <file>        Write to file instead of stdout
 +
-O, --remote-name          Write output to a file named as the remote file
 +
-s, --silent              Silent mode
 +
-T, --upload-file <file>  Transfer local FILE to destination
 +
-u, --user <user:password> Server user and password
 +
-A, --user-agent <name>    Send User-Agent <name> to server
 +
-v, --verbose              Make the operation more talkative
 +
-V, --version              Show version number and quit
 +
</source>
 
==== 출력을 파일에 저장 ====
 
==== 출력을 파일에 저장 ====
 
* curl 명령의 결과를 저장하려면 -o 또는 -O 옵션을 사용합니다.
 
* curl 명령의 결과를 저장하려면 -o 또는 -O 옵션을 사용합니다.

2023년 2월 21일 (화) 10:50 판

thumb_up 추천메뉴 바로가기


1 Curl[편집]

  • Curl 은?
curl은 명령줄이나 스크립트에서 데이터를 전송하는 데 사용됩니다. curl은 자동차, 텔레비전 세트, 라우터, 프린터, 오디오 장비, 휴대폰, 태블릿, 셋톱 박스, 미디어 플레이어에도 사용되며 100억 개가 넘는 설치에서 수천 개의 소프트웨어 애플리케이션을 위한 인터넷 전송 엔진입니다.
  1. HTTP, HTTPS, SCP , SFTP 및 FTP 등 지원
  2. curl은 전송을 재개하고 대역폭을 제한하며 프록시 지원, 사용자 인증 등을 수행할 수 있는 다양한 옵션 제공
  3. Download https://curl.se/download.html

2 Curl 설치[편집]

2.1 Ubuntu / Debian 설치[편집]

sudo apt update
sudo apt install curl

2.2 CentOS / Fedora 설치[편집]

sudo yum install curl

3 Curl 옵션 (파라미터)[편집]

curl [options] [URL...]

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

예시)

curl example.com

3.1 기본 파라미터[편집]

$ curl --help
Usage: curl [options...] <url>
 -d, --data <data>          HTTP POST data
 -f, --fail                 Fail fast with no output on HTTP errors
 -h, --help <category>      Get help for commands
 -i, --include              Include protocol response headers in the output
 -o, --output <file>        Write to file instead of stdout
 -O, --remote-name          Write output to a file named as the remote file
 -s, --silent               Silent mode
 -T, --upload-file <file>   Transfer local FILE to destination
 -u, --user <user:password> Server user and password
 -A, --user-agent <name>    Send User-Agent <name> to server
 -v, --verbose              Make the operation more talkative
 -V, --version              Show version number and quit

3.2 출력을 파일에 저장[편집]

  • curl 명령의 결과를 저장하려면 -o 또는 -O 옵션을 사용합니다.
  • 소문자 -o 는 미리 정의된(Save As ..) 파일 이름을 사용하여 파일을 저장합니다. 아래 예에서는 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

3.3 다운로드 재시작[편집]

  • -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

3.4 URL의 HTTP 헤더 가져오기[편집]

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

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

curl -I --http2 https://www.ubuntu.com/
3.4.1 웹 사이트가 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 옵션을 사용할 필요가 없습니다.


3.5 리디렉션을 따르기[편집]

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

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

curl google.com

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

curl -L google.com

3.6 사용자 에이전트 변경[편집]

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

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

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

3.7 최대 전송 속도 지정[편집]

  • --limit-rate 옵션을 사용하면 데이터 전송 속도를 제한할 수 있습니다.
  • 값은 바이트, k 접미사로 킬로바이트, m 접미사로 메가바이트, g 접미사로 기가바이트로 표현할 수 있습니다.

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

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

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

3.8 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/

3.9 쿠키 보내기[편집]

  • 원격 리소스에 액세스하거나 문제를 디버깅하기 위해 특정 쿠키를 사용하여 HTTP 요청을 해야 하는 경우
  • 기본적으로 Curl이 있는 리소스를 요청할 때 쿠키는 전송되거나 저장되지 않습니다.
  • 서버로 쿠키를 보내려면 -b 스위치 다음에 쿠키 또는 문자열이 들어 있는 파일 이름을 사용합니다.

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

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

3.10 프록시 사용[편집]

  • 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/

3.11 파일이용 로그인[편집]

curl --netrc-file ~/.netrc https://example.com
-- .netrc 파일정보
machine example.com login bob password passd