Computer >> 컴퓨터 >  >> 체계 >> Linux

명령줄 데이터 전송 등에 cURL을 사용하는 방법

명령줄 데이터 전송 등에 cURL을 사용하는 방법

잠시 동안 Linux 애플리케이션에 대한 터미널 중심 설치 지침을 따라왔다면 아마도 curl 어떤 지점 또는 다른 지점에서 명령합니다. cURL은 URL로 데이터를 전송하기 위한 명령줄 도구입니다. 가장 간단한 용도 중 하나는 명령줄을 통해 파일을 다운로드하는 것입니다. 그러나 cURL은 훨씬 더 많은 일을 할 수 있는 믿을 수 없을 정도로 강력한 도구이기 때문에 이것은 기만적입니다.

cURL이란 무엇입니까?

원래 1996년 Daniel Sternberg가 웹 서버에서 금융 데이터를 가져와 IRC 채널로 방송하기 위해 작성한 cURL은 브라우저를 사용하지 않고도 데이터를 가져오는 강력한 도구로 발전했습니다. 항상 터미널을 사용한다면 이것은 당신의 무기고에서 가장 중요한 도구 중 하나가 될 것입니다.

대부분의 Linux 배포판에서 cURL은 시스템에 사전 설치되어 있으며 바로 사용할 수 있습니다. 설치되어 있지 않아도 대부분의 리포지토리에도 있으므로 소프트웨어 센터를 통해 쉽게 설치할 수 있습니다.

Windows의 경우 "curl-like" 명령이 없고 macOS에는 cURL이 사전 설치되어 있지만 Linux 버전만큼 많은 플래그를 제공하지 않습니다.

설치

계속 진행하기 전에 cURL이 이미 시스템에 설치되어 있는지 확인해야 합니다.

리눅스

Debian/Ubuntu 기반 배포판에서 다음 명령을 사용하여 cURL을 설치합니다.

sudo apt install curl

아치 기반 배포판:

sudo pacman -S curl

Fedora/CentOS/RHEL:

sudo dnf install curl

macOS

macOS의 경우 이미 사전 설치되어 있으므로 아무것도 할 필요가 없습니다.

윈도우

  1. Windows 7/10/11의 경우 cURL 다운로드 페이지로 이동하여 실행 중인 아키텍처에 따라 64비트 또는 32비트 패키지 중에서 선택합니다. 아키텍처를 모른다면 2006년 이후에 만들어진 대다수의 하드웨어가 64비트에 있기 때문에 64비트가 안전한 선택입니다.
  2. 시스템 드라이브 또는 "C:\Program Files\"에 폴더를 만들고 "cURL"이라고 합니다.
명령줄 데이터 전송 등에 cURL을 사용하는 방법 <올 시작="3">
  • 다운로드한 zip 파일로 돌아가서 열고 "bin" 폴더에서 "curl.exe"를 찾습니다. 생성한 cURL 폴더에 복사합니다. 복사한 EXE는 완전히 독립적이며 Linux에서 실행할 수 있는 모든 순열을 실행할 수 있습니다.
  • 이 명령을 실제로 유용하게 만들려면 명령 프롬프트에서 어디서나 실행할 수 있도록 Windows의 PATH 변수에 추가해야 합니다.
    • 시작 메뉴를 클릭하고 environment를 입력합니다. , Enter 키를 누릅니다. .
    • "환경 변수 ..."를 클릭하십시오. 이제 환경 변수 설정에 있어야 합니다.
    명령줄 데이터 전송 등에 cURL을 사용하는 방법
    • "경로" 환경 변수를 선택한 다음 "편집..."을 클릭합니다.
    • 경로 편집 대화 상자 창에서 "새로 만들기"를 클릭하고 "curl.exe"가 있는 디렉토리를 입력합니다(예:"C:\Program Files\cURL").
    명령줄 데이터 전송 등에 cURL을 사용하는 방법
    • 이 과정을 통해 열린 대화 상자 창에서 "확인"을 클릭하고 터미널에서 cURL을 즐기세요!

    Linux에서 사용할 수 있는 cURL의 모든 플래그는 Windows 버전에서 작동해야 합니다.

    현명한 사람들에게 전하는 말: 명령 프롬프트를 Windows 터미널과 혼동해서는 안 된다는 점을 기억하십시오. Windows 터미널에는 유사한 기능을 제공하지만 완전히 다르게 작동하는 자체 버전의 cURL이 PowerShell에 포함되어 있습니다.

    cURL 사용

    시작하려면 curl maketecheasier.com을 입력하기만 하면 됩니다. 터미널에서 Enter를 누르십시오. .

    어떤 출력도 얻지 못한다면 이 사이트의 서버가 www가 아닌 ​​도메인에 대한 임의 연결 요청에 응답하도록 구성되지 않았기 때문입니다. 존재하지 않거나 온라인이 아닌 서버를 폴링하면 cURL이 호스트를 확인할 수 없다는 오류 메시지가 표시됩니다.

    명령줄 데이터 전송 등에 cURL을 사용하는 방법

    cURL이 실제로 유용한 일을 하도록 하려면 프로토콜을 지정해야 합니다. 이 예에서는 HTTPS 프로토콜을 사용하여 이 사이트의 홈 페이지를 쿼리합니다. curl https://www.maketecheasier.com을 입력합니다. .

    명령줄 데이터 전송 등에 cURL을 사용하는 방법

    모든 것이 순조롭게 진행된다면 거대한 데이터 벽을 응시하고 있을 것입니다. 해당 데이터를 좀 더 유용하게 만들기 위해 cURL에 HTML 파일에 넣도록 지시할 수 있습니다.

    curl https://www.maketecheasier.com > ~/Downloads/mte.html
    명령줄 데이터 전송 등에 cURL을 사용하는 방법

    이 명령은 사이트 출력 내용을 다운로드 폴더의 HTML 파일에 넣습니다. 즐겨찾는 파일 관리자가 있는 폴더로 이동하여 방금 만든 파일을 두 번 클릭합니다. 이 사이트 홈페이지의 HTML 출력 스냅샷을 열어야 합니다.

    명령줄 데이터 전송 등에 cURL을 사용하는 방법

    마찬가지로 -o를 사용할 수 있습니다. 동일한 결과를 얻기 위한 플래그:

    curl -o ~/Downloads/mte.html https://www.maketecheasier.com

    다음 리디렉션

    대부분의 사이트는 "http"에서 "https" 프로토콜로 트래픽을 자동으로 리디렉션합니다. cURL에서 -L로 동일한 결과를 얻을 수 있습니다. 깃발. 읽을 수 있는 페이지나 파일에 도달할 때까지 자동으로 301 리디렉션을 따릅니다.

     curl -L https://google.com.
    명령줄 데이터 전송 등에 cURL을 사용하는 방법

    다운로드 재개

    대용량 파일을 다운로드할 때 인터넷 속도에 따라 중단이 매우 짜증날 수 있습니다. 고맙게도 cURL에는 이력서 기능이 있습니다. -C 전달 플래그가 이 문제를 즉시 처리할 것입니다.

    실제 예를 보여주기 위해 Ctrl 키를 눌러 데비안의 테스트 릴리스 ISO 다운로드를 의도적으로 중단했습니다. 및 C 잡고 있는 중입니다.

    명령줄 데이터 전송 등에 cURL을 사용하는 방법

    다음 명령을 위해 -C를 첨부합니다. 깃발. 예를 들어,

    curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
    명령줄 데이터 전송 등에 cURL을 사용하는 방법

    다운로드가 중단된 위치에서 성공적으로 시작되었습니다.

    하나 이상의 파일 다운로드

    cURL에는 여러 파일을 다운로드하는 가장 직관적인 방법이 없기 때문에 두 가지 방법이 있으며 각각 고유한 절충안이 있습니다.

    다운로드 중인 파일이 열거된 경우(예:file1, file2 등), 대괄호를 사용하여 -o 깃발. 이것을 조금 덜 혼란스럽게 하기 위해 다음은 예입니다:

    curl "https://example.com/file[1-5].zip" -o "#1_#2"

    이를 수행하는 더 간단한 방법은 -O를 사용하는 것입니다. (--remote-name ). 이 플래그는 cURL이 원격 파일을 같은 이름의 로컬 파일로 다운로드하도록 합니다. 출력을 지정할 필요가 없으므로 파일을 다운로드할 디렉토리에 터미널이 열려 있을 때 이 명령을 사용해야 합니다.

    curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"

    다운로드할 열거 파일이 많은 경우 --remote-name-all 이에 대한 더 나은 플래그:

    curl --remote-name-all "https://example.com/file[1-5].zip"

    대괄호를 사용하여 URL을 다시 입력하지 않고도 동일한 사이트에서 가져온 열거되지 않은 파일을 지정할 수도 있습니다.

    curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"

    인증으로 다운로드

    -u를 사용하여 인증이 필요한 파일 다운로드(예:개인 FTP 서버에서 가져올 때) 깃발. 모든 인증 요청은 사용자 이름을 먼저 사용하고 비밀번호를 두 번째로 사용하고 둘을 구분하는 콜론으로 수행해야 합니다. 다음은 일을 간단하게 만드는 예입니다.

    curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip

    이렇게 하면 친구 bonobo_bob이 FTP 서버에 인증되고 파일이 Downloads 폴더에 다운로드됩니다.

    파일 분할 및 병합

    어떤 이유로든 큰 파일을 다운로드하여 청크로 분할하려면 cURL의 --range를 사용하면 됩니다. 깃발. --range 사용 , 시작하려는 바이트를 끝내려는 바이트까지 지정해야 합니다. 범위의 끝을 지정하지 않으면 파일의 나머지 부분만 다운로드됩니다.

    아래 명령에서 cURL은 Arch Linux 설치 이미지의 처음 100MB를 다운로드합니다.

    curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

    다음 100MB의 경우 --range 100000000-199999999를 사용합니다. , 등. &&를 사용하여 이러한 명령을 연결할 수 있습니다. 피연산자:

    curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
    curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
    curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
    curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
    curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
    curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
    curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
    curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

    위의 명령 구조를 따라 문자를 입력하면 cURL에 다운로드를 요청한 위치에 8개의 파일이 나타납니다.

    명령줄 데이터 전송 등에 cURL을 사용하는 방법

    이 파일을 다시 결합하려면 cat를 사용해야 합니다. 다음과 같이 Linux 또는 macOS를 사용하는 경우 명령:

    cat arch.part? > arch.iso

    Windows의 경우 copy를 사용해야 합니다. 다음과 같은 명령:

    copy /b arch.part* arch.iso

    기타 유용한 기능

    cURL에는 많은 플래그와 용도가 있습니다.

    • -# – 진행률 표시줄을 사용하여 잡고 있는 항목의 진행 정도를 나타냅니다. 예:curl -# https://asite.com/somefile.zip > ~/somefile.zip .
    • -a – 파일을 덮어쓰지 않고 파일에 추가하도록 cURL에 요청합니다. 예:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x .
    • --head – 출력 데이터 없이 서버에서 응답 헤더만 가져옵니다. 이것은 웹사이트를 디버깅하거나 클라이언트에 대한 서버의 프로그래밍된 응답을 엿볼 때 유용합니다. 예:curl --head https://example-url.com .
    • --limit-rate – 제한된 대역폭으로 다운로드를 주문합니다. cURL이 시스템에서 사용 가능한 모든 대역폭을 차지하기를 원하지 않는 상황에서 유용합니다. 단순한 숫자는 초당 바이트로 해석됩니다. K는 초당 킬로바이트를 나타냅니다. M은 초당 메가바이트를 나타냅니다. 예:curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip .
    • -o – 앞서 언급했듯이 cURL이 사용할 출력 파일을 결정합니다. 예:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip .
    • --proxy – 프록시로 작업하고 싶다면 이것이 방법입니다. 예:curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip .

    cURL 대 Wget

    같은 해(1996)에 출시된 cURL과 Wget은 평범한 관찰자에게 거의 자매 프로그램입니다. 하지만 조금 더 깊이 들어가 보면 이 두 자매가 서로 다른 목적을 가지고 있음을 알 수 있습니다.

    Wget

    • 인터넷에서 데이터를 가져오기 위해 처음부터 완전히 구축되었습니다.
    • -L 필요 없음 또는 -o cURL과 같은 플래그; wget [url]을 입력하기만 하면 됩니다. 그리고 가세요!
    • 재귀적으로 다운로드하여 -r을 사용하여 디렉토리의 모든 항목을 가져올 수 있습니다. 깃발.
    • 사용자가 일상적으로 사용하는 데 필요한 모든 기능을 갖추고 있으며 일상적인 시스템 관리자 작업에 적합합니다.
    • (Linux에서) 많은 종속성이 필요하지 않습니다. 모두 즉시 사용할 수 있어야 합니다.

    cURL

    • 원격 검색을 위한 광범위한 플래그 및 유용한 기능.
    • 로컬 네트워킹(LDAP) 및 네트워크 프린터(Samba)를 지원합니다.
    • gzip 압축 라이브러리와 잘 작동합니다.
    • 개발자가 cURL의 기능을 포함하는 소프트웨어 또는 bash 스크립트를 작성할 수 있도록 하는 libcurl에 따라 다릅니다.

    간단히 말해서 Wget은 인터넷에서 물건을 가져오기 위한 "모든 사람의 도구 상자"인 반면 cURL은 고급 사용자와 시스템 관리자를 위한 보다 세분화된 제어로 이를 확장합니다.

    자주 묻는 질문(FAQ)

    1. Linux에서 인증서 오류가 발생했습니다. 어떻게 수정합니까?

    "피어의 인증서 발급자가 신뢰할 수 없는 것으로 표시되었습니다."와 같은 오류가 발생한 경우 이 문제를 해결하는 가장 쉬운 방법은 배포판에 공통 인증서 패키지를 다시 설치하는 것입니다.

    Debian/Ubuntu 기반 시스템의 경우:

    sudo apt reinstall ca-certificates

    Fedora/CentOS/RHEL:

    dnf reinstall ca-certificates

    아치 기반 시스템의 경우:

    pacman -S ca-certificates

    Arch에서 pacman -Scc를 사용하여 패키지 캐시를 지우고 싶을 수도 있습니다. 인증서 패키지를 다시 설치하기 전에.

    이 오류가 계속 발생하면 서버 측에 문제가 있는 것일 수 있습니다.

    2. cURL과 bash 명령을 함께 실행하는 것이 안전한가요?

    Linux 애플리케이션을 설치하는 가장 일반적인 방법은 아니지만 curl을 사용하는 것 외에는 선택의 여지가 없는 많은 개발자(예:NodeJS 뒤에 있는 사람들)가 있습니다. bash를 통해 실행되는 루트 액세스 명령과 함께(예:curl [argument] | sudo -E bash - ) 소프트웨어를 설치합니다.

    약간 무섭게 보일 수 있지만 응용 프로그램 뒤에있는 사람들이 신뢰할 수 있다면 무언가를 깨뜨릴 가능성은 거의 없습니다. 악의적인 행위자는 어디에나 있으며 Arch의 AUR과 같은 저장소에 침투할 수 있으므로 curl을 사용하여 설치 루트 액세스 명령과 함께 사용하는 것이 일반적으로 패키지 관리자를 통해 수행하는 것보다 더 안전하지 않습니다.

    3. Tor와 함께 cURL을 사용할 수 있습니까?

    예! Tor 브라우저(또는 독립 실행형 Tor 서비스)를 시작하고 --proxy를 사용하십시오. 깃발. Tor는 다른 애플리케이션에서 IP를 마스킹하는 데 사용할 수 있는 로컬 프록시를 제공합니다. 다음은 Tor와 함께 사용되는 cURL의 예입니다.

    curl --proxy localhost:9050 https://example.com

    독립형 Tor 서비스는 수신 포트로 9050을 사용하는 반면 Tor 브라우저는 포트 9150을 사용합니다.

    마무리

    cURL은 Linux 세계의 변화하는 구조 속에서도 복원력이 입증되었으며 터미널 사용자의 무기고에서 중요한 도구로서의 위치를 ​​유지하고 있습니다.

    명령줄을 처음 사용하는 경우 가장 유용한 Linux 명령을 확인하십시오. 인터넷에서 데이터를 다운로드하는 대신 단순히 웹을 검색하고 싶다면 단말기에서도 검색할 수 있습니다.