Jak korzystać z polecenia Curl w systemie Linux?

Obszerny przewodnik wyjaśniający użycie polecenia curl do pobierania stron internetowych i pobierania plików bezpośrednio z terminala

ten kędzior polecenie to jeszcze jedno interesujące narzędzie wiersza poleceń, które Linux ma do zaoferowania. kędzior polecenie pozwala użytkownikowi pobrać pliki z serwera.

kędzior jest popularnym wyborem twórców aplikacji i częstych użytkowników Linuksa ze względu na obsługę wielu protokołów, takich jak RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, PLIK, GOPHER, LDAP, LDAPS, POP3, POP3S itp.

kędzior polecenie robi znacznie więcej niż tylko pobieranie stron internetowych. Znajomość opcji dostępnych w tym poleceniu czyni go bardziej wszechstronnym w użyciu. Zanurzmy się w samouczku, aby dobrze zrozumieć korzystanie z kędzior polecenie na kilku krótkich przykładach.

Instalacja

Przed użyciem kędzior polecenie, sprawdź, czy jest już zainstalowany w twoim systemie. Użyj polecenia curl --wersja sprawdzić, czy kędzior jest zainstalowane.

W przypadku, gdy kędzior nie jest zainstalowany, wykonaj następujące czynności.

W systemach opartych na Ubuntu i Debianie, posługiwać się:

aktualizacja sudo apt-get
sudo apt-get zainstaluj curl

W dystrybucjach RHEL, CentOs i Fedora, posługiwać się:

sudo mniam zainstaluj curl

Teraz użyj curl --wersja polecenie, aby upewnić się, że jest poprawnie zainstalowany.

curl --wersja

Wyjście:

curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30. 0 librtmp/2.3 Data wydania: 2018-01-24 Protokoły: plik dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Funkcje: AsynchDNS IDN IPvLM NTLMOS_WNEGOB SSLAPI libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$ 

Teraz jesteśmy gotowi do użycia kędzior Komenda.

Opcje dostępne za pomocą polecenia CURL

Najpierw rzućmy okiem na niektóre z najważniejszych opcji dostępnych w kędzior Komenda.

OpcjaOpis
-upobierać pliki z serwera FTP
-Cwznowić przerwane pobieranie
-oaby zapisać wynik kędzior polecenie z predefiniowaną nazwą pliku
-Iaby uzyskać nagłówki HTTP zdefiniowanego adresu URL
-Oaby zapisać wynik kędzior polecenie z oryginalną nazwą pliku
--libcurlaby wyprowadzić kod źródłowy C, który używa libcurl dla określonej opcji
-xużyć proxy, aby uzyskać dostęp do adresu URL
-#aby wyświetlić pasek postępu, aby pokazać stan pobierania

Pobieranie strony internetowej za pomocą CURL

ten kędzior polecenie, gdy jest używane bez żadnej opcji, pobiera zawartość adresu URL określonego w poleceniu.

Składnia:

zwijanie [URL]

Przykład:

curl //wszystko.jak

Wyjście:

gaurav@ubuntu:~$ curl //allthings.how html{overflow-x:hidden!important}html.i-amphtml-fie{height:100%!important;width:100%!important}html:not([amp4ads ]),html:not([amp4ads]) body{height:auto!important}html:not([amp4ads]) body{margin:0!important}body{-webkit-text-size-adjust:100%;- moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}html.i-amphtml-singledoc.i-amphtml-embedded{-ms-touch -action:pan-y;touch-action:pan-y}html.i-amphtml-fie>body,html.i-amphtml-singledoc>body{overflow:visible!important}html.i-amphtml-fie:not (.i-amphtml-inabox)>body,html.i-amphtml-singledoc:not(.i-amphtml-inabox)>body{position:relative!important}html.i-amphtml-webview>body{overflow-x :hidden!important;overflow-y:visible!important;min-height:100vh!important}html.i-amphtml-ios-embed-legacy>body{overflow-x:hidden!important;overflow-y:auto!important ;position:absolute!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;over flow-y:auto!important;position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;margin:0!important;display:block!important} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scrolling: touch!important}#i-amphtml-wrapper>body{position:relative!important;border-top:1px solid transparent!important}#i-amphtml-wrapper+body{visibility:visible}#i-amphtml-wrapper+body .i-amphtml-lightbox-element,#i-amphtml-wrapper+body[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox -element{visibility:visible}#i-amphtml-wrapper.i-amphtml-scroll-disabled,.i-amphtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}amp-instagram {padding:54px 0px 0px!important;background-color:#fff}amp-iframe iframe{box-sizing:border-box!important}[amp-access][amp-access-hide]{display:none}[subskrypcje -dialog],body:not(.i-amphtml-s ubs-ready) [subscriptions-action],body:not(.i-amphtml-subs-ready) [subscriptions-section]{display:none!important}amp-experiment,amp-live-list>[aktualizacja]{display :none}.i-amphtml-jank-meter{position:fixed;background-color:rgba(232,72,95,0.5);bottom:0;right:0;color:#fff;font-size:16px; z-index:1000;padding:5px}amp-list[resizable-children]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list [load-more] [load-more-button],amp-list[load-more] [load-more-end],amp-list[load-more] [load-more-failed],amp-list[load -more] [load-more-loading] {display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height: 1px !important;display:block!important;height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;width:100%!important}amp-story[standalone]{background- color:#202125!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-amphtm l-loader-background{display:none!important}amp-story-page:not(:first-of-type):not([odległość]):not([aktywny]){transform:translateY(1000vh)!important }amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>input,amp-autocomplete>textarea{padding:0.5rem;border:1px solid rgba(0,0,0,0.33) }.i-amphtml-autocomplete-results,amp-autocomplete>input,amp-autocomplete>textarea{font-size:1rem;line-height:1.5rem}[amp-fx^=fly-in]{visibility:hidden} amp-script[nodom]{position:fixed!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden} 

Tutaj zawartość strony internetowej jest pobierana bezpośrednio do twojego terminala jako kod źródłowy.

Możesz użyć opcji -o oraz -O z kędzior polecenie, aby zapisać tę zawartość w pliku.

Kiedy -o zostanie użyta opcja, zawartość adresu URL zostanie zapisana w bieżącym katalogu z nazwą pliku zdefiniowaną przez użytkownika.

Składnia:

curl -o [nazwa_pliku_zdefiniowanego przez użytkownika] [URL]

Przykład:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Łącznie % Otrzymano % Xferd Średnia prędkość Czas Czas Czas Bieżące pobieranie Przesyłane Łącznie wydane Lewa prędkość 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

W tym przykładzie treść z adresu URL „wszystko.jak” jest zapisywana jako plik HTML o nazwie ath.html w moim bieżącym katalogu roboczym. Po otwarciu tego pliku HTML zostanę przekierowany na zapisaną stronę internetową.

Pobieranie plików za pomocą polecenia CURL

Używając -O opcja z poleceniem curl zapisuje również zawartość lub stronę internetową lub pakiet do pobrania jako plik, ale zapisuje ten plik pod oryginalną nazwą.

Zobaczmy to na przykładzie:

Przykład:

Tutaj użyłem kędzior polecenie z -O możliwość pobrania pakietu Ubuntu o nazwie „cherrytree_0.37.6-1.1_all.deb‘ z repozytorium pakietów Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Razem % Otrzymano % Xferd Średnia Prędkość Czas Czas Czas Aktualne przesyłanie plików Łączna wydana pozostała prędkość 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

Wyjście:

trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$

Tak więc pakiet jest teraz pobierany i zapisywany w bieżącym katalogu roboczym (CWD) z oryginalną nazwą.

Wyświetlanie paska postępu podczas pobierania pliku

Podczas użytkowania dostępna jest jeszcze jedna modyfikacja estetyczna kędzior polecenie, aby pobrać plik. Możesz zobaczyć postęp pobierania pliku w postaci paska postępu na swoim terminalu. Wystarczy dołączyć -# opcja z Twoim poleceniem, aby pobrać plik.

Zobaczmy przykład tego ulepszenia.

Składnia:

curl -# -O [URL]

Przykład:

gaurav@ubuntu:~/workspace$ curl -# -O //archive.ubuntu.com/ubuntu/pool/main/e/emacs-defaults/emacs-defaults_47.0.tar.xz ######## ################################################## ################################################## ##################################### 100,0% gaurav@ubuntu:~/workspace$ 

Wyjście:

gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$ 

Na tym wyjściu możesz zauważyć, że pobrałem pakiet o nazwie „emacs-defaults_47.0.tar.xz„ w moim CWD, a pasek postępu jest wyświetlany na terminalu, gdy trwało pobieranie.

Wznawianie przerwanego pobierania w CURL

Niejednokrotnie może dojść do sytuacji, w której konieczne będzie pobranie plików o większym rozmiarze. Czasami z pewnych powodów, takich jak awaria zasilania lub awaria sieci, pobieranie może zostać przerwane w trakcie procesu bez pobierania całego pliku. Nawet jeśli naciśniesz Ctrl+C w terminalu proces zostaje przerwany.

ten kędzior polecenie, gdy jest używane z -C opcja wznawia przerwane pobieranie.

Składnia:

curl -C - -O [URL]

Przykład:

Na tej ilustracji próbowałem pobrać obraz ISO Ubuntu 20.04 ze strony internetowej Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974 % Ogółem % Odebrano % Xferd Średnia prędkość Czas Czas Czas Bieżące pobieranie Przesyłanie Łączna wydana lewa prędkość 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

Tutaj celowo przerwałem proces pobierania przez Ctrl+C.

Teraz użyję -C opcja z kędzior polecenie wznowienia przerwanego pobierania z tej samej strony źródłowej.

Wyjście:

gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974 ** Wznawianie transferu z pozycja bajtu 1851392 % Łącznie % Odebrany % Xferd Średnia prędkość Czas Czas Czas Bieżące pobieranie Przesyłanie Łącznie wydane Lewa prędkość 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278

Pobieranie zostało pobrane z miejsca, w którym zostało przerwane.

Pobieranie plików z serwera FTP za pomocą CURL

To całkiem proste z kędzior polecenie, aby pobrać plik z serwera FTP za pomocą -u opcja. Musisz wprowadzić nazwę użytkownika i hasło w poleceniu przed wprowadzeniem adresu URL.

Składnia:

curl -u [nazwa użytkownika]:[hasło] [URL]

Na przykład użyję publicznego FTP online.

Przykład:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Ogółem % Otrzymano % Xferd Średnia Szybkość Czas Czas Czas Bieżące pobieranie Przesyłanie Całkowite wydane Pozostała prędkość 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

Tutaj pobrałem plik o nazwie „16-wrz-20-16-0-0.csv” z tego serwera ftp i zapisałem go pod oryginalną nazwą w moim CWD. Sprawdzę pobrany plik za pomocą ls Komenda.

gaurav@ubuntu:~/workspace$ ls -al łącznie 1092 drwxrwxr-x 3 gaurav gaurav 4096 16 września 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 wrz 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 wrz 16 16:15 16-wrz-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 16 września 11:45 ath.html gaurav@ubuntu:~/workspace$

Pobieranie wielu plików razem za pomocą CURL

Pobieranie wielu plików jednocześnie za pomocą kędzior polecenie to bardzo proste zadanie. Po prostu używasz -O opcja z kędzior polecenie podobne w sposób, który wykonaliśmy w powyższych blokach.

Składnia:

curl -O [URL-1] -O [URL-2] -O[URL-n]

Przykład:

gaurav@ubuntu:~/workspace$ curl -O //archive.ubuntu.com/ubuntu/pool/universe/a/aegean/aegean_0.15.2+dfsg-1.debian.tar.xz -O //archive.ubuntu. com/ubuntu/pool/main/a/apache2/apache2_2.4.29.orig.tar.gz % Łącznie % Odebranych % Xferd Średnia prędkość Czas Czas Czas Bieżące pobieranie Przesyłane Łącznie wydane Lewa prędkość 100 63500 100 63500 0 0 55458 0 0:00 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $ 

W tym przykładzie pobrałem dwa różne pakiety z repozytorium Ubuntu.

Wyjście:

gaurav@ubuntu:~/workspace$ ls -al łącznie 9596 drwxrwxr-x 3 gaurav gaurav 4096 16 września 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 wrz 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 wrz 16 16:15 16-wrz-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 16 września 16:28 aegean_0.15.2+dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 16 września 16:29 apache2_2.4.29. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16 września 11:45 ath.html gaurav@ubuntu:~/workspace$ 

Dwa pakiety są pobierane jednocześnie za pomocą polecenia curl.

Pobieranie nagłówków HTTP z adresu URL za pomocą CURL

Pola nagłówków HTTP dowolnego adresu URL zawierają przydatne informacje, takie jak agent użytkownika, typ treści, kodowanie itp. Te pliki nagłówkowe dostarczają również informacji o obiekcie wysłanym w treści wiadomości. Szczegóły dotyczące żądania i odpowiedzi są również uzyskiwane z tych nagłówków HTTP.

Możesz użyć kędzior polecenie z -I opcję uzyskania tych nagłówków HTTP adresu URL.

Składnia:

curl -I [URL]

Przykład:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="To nie jest zasada P3P! Więcej informacji znajdziesz na g.co/p3phelp." Data: środa, 16 września 2020 r. 11:17:00 GMT Serwer: gws X-XSS-Ochrona: 0 X-Frame-Opcje: SAMEORIGIN Transfer-Encoding: chunked Wygasa: środa, 16 września 2020 r. 11:17:00 GMT Cache- Kontrola: prywatny Set-Cookie: 1P_JAR=2020-09-16-11; wygasa=piątek, 16-paź-2020 11:17:00 GMT; ścieżka=/; domena=.google.com; Bezpieczny zestaw-cookie: NID=204=SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbxKiunX630H7Am6 wygasa=Czw, 18-Mar-2021 11:17:00 GMT; ścieżka=/; domena=.google.com; HttpOnly gaurav@ubuntu:~/workspace$

W tym przykładzie pobrałem nagłówki HTTP z „www.firefox.com‘.

Pobieranie kodu źródłowego C za pomocą CURL

Za pomocą kędzior polecenie z --libcurl opcja może pobrać kod źródłowy C. Nie ma to większego znaczenia dla laików, ale może okazać się bardzo pomocne dla programistów systemowych, analityków bezpieczeństwa i programistów aplikacji.

Składnia:

curl [URL] > nazwa pliku --libcurl [kod_nazwa pliku]

Przykład:

W tym przykładzie pobrałem zawartość adresu URL wszystko.jak i zapisał go w pliku o nazwie gy_ath.html. Kod źródłowy C jest oddzielnie przechowywany w źródło.c plik.

curl //www.allthings.how > gy_ath.html --libcurl source.c 

Wyjście:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Ogółem % Otrzymano % Xferd Średnia prędkość Czas Czas Czas Bieżące pobieranie Przesłane Łącznie wydane Pozostała prędkość 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

Sprawdźmy teraz pobrane pliki.

gaurav@ubuntu:~/workspace $ ls -al łącznie 404 drwxrwxr-x 3 gaurav gaurav 4096 16 września 17:08. drwxr-xr-x 87 gaurav gaurav 266240 wrz 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 wrz 16 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 1535 16 września 17:13 source.c gaurav@ubuntu:~/workspace$

ten źródło.c plik zawiera kod źródłowy. Można to wyświetlić na terminalu za pomocą Kot Komenda. Umieściłem kilka wierszy z wyjścia w podanym poniżej bloku.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Przykładowy kod wygenerowany przez narzędzie wiersza poleceń curl ********** * Wszystkie opcje curl_easy_setopt() są udokumentowane pod adresem: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html ******************************** ****************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; ZWIJANIE *hnd; hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L); curl_easy_setopt(hnd, CURLOPT_URL, "//www.allthings.how"); curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.58.0"); curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);

Korzystanie z serwera proxy w CURL w celu uzyskania dostępu do adresu URL

Jak omówiono we wstępie, kędzior polecenie obsługuje szeroką gamę protokołów, takich jak FTP, SMTP, HTTPS, SOCKS itp. Czasami użycie serwera proxy do przesyłania plików staje się ważne, gdy chcesz zwiększyć szybkość przesyłania, a także chronić swoją tożsamość. kędzior Polecenie może być łatwo użyte do przesyłania plików przez serwer proxy, dołączając -x opcja do niego.

Przykład:

curl -x [adres_proxy]:[port] [URL]

W powyższym przykładzie założyłem, że Twój serwer proxy nie wymaga uwierzytelniania. W przypadku, gdy proxy wymaga uwierzytelnienia, aby rozpocząć transfer, możesz użyć następującego polecenia.

curl -u [nazwa użytkownika]:[hasło] -x [adres_proxy]:[port] [URL]

Za pomocą tej prostej metody możemy przesyłać pliki przez serwer proxy z opcją -x używany z kędzior Komenda.

Wniosek

W tym krótkim samouczku dowiedzieliśmy się, jak kędzior polecenie okazuje się pomocne w pobieraniu treści bezpośrednio z terminala. Dowiedzieliśmy się również o różnych opcjach dostępnych za pomocą tego polecenia, które można wykorzystać do różnych zadań.