Curl 사용법
DB CAFE
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 Curl[편집]
- Curl 은?
- curl은 명령줄이나 스크립트에서 데이터를 전송하는 데 사용됩니다. curl은 자동차, 텔레비전 세트, 라우터, 프린터, 오디오 장비, 휴대폰, 태블릿, 셋톱 박스, 미디어 플레이어에도 사용되며 100억 개가 넘는 설치에서 수천 개의 소프트웨어 애플리케이션을 위한 인터넷 전송 엔진입니다.
- HTTP, HTTPS, SCP , SFTP 및 FTP 등 지원
- curl은 전송을 재개하고 대역폭을 제한하며 프록시 지원, 사용자 인증 등을 수행할 수 있는 다양한 옵션 제공
- 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 명령의 결과를 저장하려면 -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.2 다운로드 재시작[편집]
- -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.3 URL의 HTTP 헤더 가져오기[편집]
- HTTP 헤더는 사용자 에이전트, 내용 유형 및 인코딩과 같은 정보를 포함하는 콜론 구분 키 값 쌍입니다.
- 헤더는 요청 또는 응답과 함께 클라이언트와 서버 간에 전달됩니다.
-I 옵션을 사용하여 지정된 리소스의 HTTP 헤더만 가져옵니다.
curl -I --http2 https://www.ubuntu.com/
3.3.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.4 리디렉션을 따르기[편집]
- 기본적으로 컬은 HTTP 위치 머리글을 따르지 않습니다.
google.com의 non-ww 버전을 검색하려고 하면 페이지의 원본을 가져오는 대신 www 버전으로 리디렉션됩니다.
curl google.com
-L 옵션은 컬이 최종 대상에 도달할 때까지 모든 리디렉션을 따르도록 지시합니다.
curl -L google.com
3.5 사용자 에이전트 변경[편집]
- 경우에 따라 파일을 다운로드할 때 방문자 장치 및 브라우저에 따라 사용자 에이전트 컬을 차단하거나 다른 내용을 반환하도록 원격 서버를 설정할 수 있습니다.
- 이런 경우 다른 브라우저를 에뮬레이트하려면 -A 옵션을 사용합니다.
예를 들어 Firefox 60을 에뮬레이트하는 경우 다음을 사용합니다.
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/
3.6 최대 전송 속도 지정[편집]
- --limit-rate 옵션을 사용하면 데이터 전송 속도를 제한할 수 있습니다.
- 값은 바이트, k 접미사로 킬로바이트, m 접미사로 메가바이트, g 접미사로 기가바이트로 표현할 수 있습니다.
다음 예제에서는 이동 바이너리를 다운로드하고 다운로드 속도를 1MB로 제한합니다.
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
이 옵션은 컬이 사용 가능한 모든 대역폭을 소비하는 것을 방지하는 데 유용합니다.
3.7 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.8 쿠키 보내기[편집]
- 원격 리소스에 액세스하거나 문제를 디버깅하기 위해 특정 쿠키를 사용하여 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.9 프록시 사용[편집]
- 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/