logo

Polecenie Curl w systemie Linux z przykładami

Polecenie curl w systemie Linux służy do pobierania lub przesyłania danych na serwer za pośrednictwem obsługiwanych protokołów, takich jak HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP itp. Jest to narzędzie zdalne, więc działa bez interakcji użytkownika.

Przesyłanie danych z jednego miejsca do drugiego jest jednym z najważniejszych i najczęściej wykorzystywanych zadań systemu komputerowego. Istnieje jednak wiele narzędzi GUI do przesyłania danych. Ale podczas pracy z wierszem poleceń staje się to nieco skomplikowane. Narzędzie curl pozwala nam przesyłać dane za pomocą wiersza poleceń.

Curl to narzędzie wiersza poleceń służące do pobierania i wysyłania danych, takich jak pliki ze składnią adresu URL. Obsługuje wszystkie protokoły obsługiwane przez libcurl, ponieważ używa libcurl. Curl zapewnia obsługę protokołu HTTPS i implementuje weryfikację certyfikatu SSL, gdy domyślnie wymieniony jest bezpieczny protokół, taki jak HTTPS. Curl przyniesie certyfikat serwera zdalnego i sprawdzi certyfikat urzędu certyfikacji, aby zachować ważność serwera zdalnego i zagwarantować, że serwer zdalny jest tym, o który prosi, gdy Curl łączy się ze zdalnym serwerem przez HTTPS.

Istnieje wiele opcji definiowania certyfikatu urzędu certyfikacji, np --kapata I --cacert . Opcja --cacert może zostać wykorzystana do określenia lokalizacji pliku bazy certyfikatów urzędu certyfikacji. Jeśli plik certyfikatu CA nie jest dostępny na platformie Windows, curl wyszuka nazwę pliku certyfikatu CA „curl-ca-bundle.crt” w poniższej kolejności:

  • Katalog, w którym znajduje się program curl.
  • Bieżący katalog roboczy.
  • Katalog systemowy (Windows).
  • Katalog (Windows).
  • Katalogi są wymienione w zmiennych środowiskowych %PATH%.

Curl wyświetli komunikat o błędzie, gdy serwer zdalny używa certyfikatu z podpisem własnym lub gdy certyfikat serwera zdalnego nie jest podpisany przez urząd certyfikacji wymieniony w pliku certyfikatu urzędu certyfikacji. Opcja --insecure lub -k może zostać wykorzystana do pominięcia weryfikacji certyfikatu. Certyfikat zdalnego urzędu certyfikacji można alternatywnie uwzględnić w pliku bazy certyfikatów urzędu certyfikacji, jeśli serwer zdalny jest prawidłowy.

Curl zapewnia mnóstwo przydatnych sztuczek, takich jak wznawianie przesyłania plików, pliki cookie, połączenia SSL, poczta HTTP, przesyłanie FTP, uwierzytelnianie użytkowników, obsługa proxy i wiele innych. Curl jest zmechanizowany przez libcurl pod każdym względem związanym z transferem.

Co to jest libcurl?

libcurl to bezpłatna biblioteka do przesyłania adresów URL po stronie klienta. Obsługuje SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, tunelowanie proxy HTTP, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT i pliki cookie. Biblioteka obsługuje także uwierzytelnianie użytkownika plus hasło, serwery proxy, LDAPS, certyfikaty HTTPS, przesyłanie w oparciu o formularze HTTP, przesyłanie FTP, wznawianie przesyłania plików, TFTP, Telnet, SFTP i schemat adresu URL pliku.

libcurl jest kompaktowy. Tworzy i działa identycznie na kilku platformach, w tym Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP -UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet OS, BeOS, Android, AmigaOS i AIX.

Biblioteka libcurl jest kompatybilna z IPv6, bezpieczna dla wątków i bezpłatna. Dostępne są także powiązania dla ponad 50 języków, w tym Python, PHP, Java i C/C++.
Biblioteka libcurl obsługuje SChannel, gskit na IBM i, NSS, mbed TLS, GnuTLS na Windows, Secure Trasport na iOS i macOS, TLS/SSL przez OpenSSL, rustls, BearSSL, wolfSSL, AmiSSL, libressl i Boringssl.

Składnia:

Podstawowa składnia używania curl jest następująca:

 curl [options] [URL...] 

Z powyższej składni

Adres URL:

Składnia adresu URL jest ogólnym adresem URL zależnym od protokołu. Możemy określić wiele adresów URL w następujący sposób:

 http://site.{one,two,three}.com 

Opcje:

Polecenie curl obsługuje następujące opcje wiersza poleceń:

--abstract-unix-socket: Służy do łączenia się za pośrednictwem abstrakcyjnego gniazda domeny Unix zamiast sieci.

--anyauth: Służy do wydawania poleceń curl w celu samodzielnego uwierzytelnienia metody w celu użycia najbezpieczniejszej metody. To narzędzie jest opcjonalnym narzędziem „--basic, --digest, --ntlm i negocjowane”, które służy do ustawiania określonej metody uwierzytelniania.

-a, --append: Służy do przesyłania plików. Dołącza plik, zamiast go nadpisywać. Jeśli podany plik nie istnieje na serwerze, utworzy go.

liczba całkowita w porównaniu do Java

--podstawowy: Określa użycie podstawowego uwierzytelniania HTTP. Jest to domyślna opcja polecenia curl. Przydaje się do zastąpienia poprzednich ustawień.

--cacert: Określono użycie określonego pliku certyfikatu do weryfikacji partnera. Pliki mogą mieć kilka certyfikatów CA. Standardowym formatem certyfikatów jest PEM, dlatego wszystkie certyfikaty muszą się w nim znajdować.

--kapata: Określa się użycie określonego katalogu do weryfikacji partnera. Możemy określić wiele ścieżek, oddzielając je dwukropkiem (:) na przykład „ścieżka: ścieżka2:ścieżka3”. Standardowym formatem certyfikatów jest PEM, dlatego wszystkie certyfikaty muszą się w nim znajdować.

--cert-status: Służy do weryfikacji statusu certyfikatu serwera. Wykorzystuje żądanie statusu certyfikatu lub zszywanie TLS OCSP.

--typ-certyfikatu: Określa dostarczony typ certyfikatu curl. Certyfikaty te mogą być w formacie PEM, DER i ENG. Wartość domyślna to PEM. Jeśli zostanie określony wiele razy, ostatnia wartość zostanie pobrana przez zwijanie.

-E, --cert: Określa się użycie pliku certyfikatu klienta podczas pobierania pliku za pośrednictwem dowolnego protokołu opartego na SSL, takiego jak HTTPS, FTPS itp.

--szyfry: Służy do wyboru szyfrów, które mają być użyte w połączeniu.

--skompresowany-ssh: Służy do włączania wbudowanej kompresji SSH. Ta opcja zostanie potraktowana jako żądanie serwera, więc serwer może ją zaakceptować lub nie.

--sprężony: Służy do żądania skompresowanej odpowiedzi przy użyciu algorytmów zwijania i zapisywania nieskompresowanego dokumentu. Ta opcja wyśle ​​raport dotyczący nieobsługiwanego kodowania curl.

-K, --config: Służy do opisu pliku tekstowego do odczytywania argumentów curl. Curl użyje argumentów wiersza poleceń z pliku tekstowego.

--connect-timeout: Służy do określenia maksymalnego czasu w sekundach przekroczenia limitu czasu połączenia typu curl.

--połącz z: Służy do tworzenia żądania do danej pary hosta i portu; w przeciwnym razie połączy się z następną parą. Ta opcja jest przydatnym narzędziem do bezpośredniego wysyłania żądań do określonego serwera.

-C, --continue-at: Służy do kontynuowania lub wznawiania poprzedniego transferu plików przy danym przesunięciu.

-c, --cookie-jar: Służy do określenia konkretnego pliku, do którego chcemy zapisywać wszystkie ciasteczka po udanej operacji.

-b, --cookie: Służy do przekazywania danych do serwera HTTP w nagłówku Cookie.

--utwórz-katalogi: Używa się go w połączeniu z „-o?” opcja, utworzy wymaganą hierarchię katalogów lokalnych.

--crlf (FTP SMTP): Służy do konwersji LF na CRLF podczas przesyłania. Jest to przydatne narzędzie dla MVS (OS/390).

--crlplik: Służy do określenia (w formacie PEM) listy unieważnionych certyfikatów.

--data-ascii: Jest to alias dla ?-d? opcja.

--delegacja: Służy do ustawienia POZIOMU, aby potwierdzić, że serwer może delegować dane uwierzytelniające użytkownika.

--strawić: Służy do włączania uwierzytelniania HTTP Digest.

-q, --wyłącz: Jeśli zostanie użyty jako pierwszy argument, zignoruje plik konfiguracyjny curlrc.

--interfejs dns: Służy do potwierdzania wysyłania wychodzących żądań DNS przez serwer.

--dns-servery: Służy do określenia serwerów DNS zamiast serwerów domyślnych.

-f, --fail: Służy do cichego wyłączania zwijania w przypadku błędów serwera.

-F, --formularz: Służy do emulacji wypełnionego formularza przesłanego przez użytkownika.

-P, --ftp-port: Służy do odwrócenia domyślnych ról słuchaczy podczas łączenia się z FTP.

--ftp-ssl-ccc-mode: Służy do ustawiania trybu CCC.

-G, --get: Służy do określania danych za pomocą ?-d? opcja używana w żądaniu HTTP GET zamiast w żądaniu POST.

-h, --pomoc: Służy do wyświetlania instrukcji pomocy zawierającej krótki opis możliwości użytkowania i wsparcia.

-0, --http1.0: Jest określony do używania protokołu HTTP w wersji 1.0.

--ignore-długość-treści: Służy do ignorowania nagłówka Content-Length.

-Zawieram: Służy do dołączania nagłówków odpowiedzi HTTP.

-4, --ipv4: Służy do tłumaczenia nazw na adresy IPv4.

-6, --ipv6: Służy do tłumaczenia nazw na adresy IPv6.

Protokoły zwijania

Curl obsługuje kilka protokołów:

    DYKT:Dzięki niemu możemy wyszukiwać słowa za pomocą samych słowników.FTP (S):Curl obsługuje protokół FTP przy użyciu wielu dźwigni i poprawek. Z TLS lub bez.PLIK:Pozwala nam zapisywać i czytać plik lokalny. Curl nie pozwala na zdalny dostęp do pliku://URL, ale będzie działać, gdy będzie aktywny w systemie Microsoft Windows z natywnym podejściem UNC.GOFER (S):Pobiera pliki.HTTP (S):Curl obsługuje protokół HTTP przy użyciu wielu odmian i opcji. Może obsługiwać wersje HTTP 0.9, 1.0, 1.1, 2 i 3, w zależności od dokładnego wiersza poleceń i opcji kompilacji.IMAP (S):Curl pobiera dla nas e-maile za pomocą protokołu odczytu poczty. Z TLS lub bez.LDAP (S):Curl może zaimplementować dla nas wyszukiwanie katalogów z użyciem TLS lub bez niego.MQTT:Curl obsługuje 3 wersję MQTT. Pobieranie na MQTT jest takie samo jak 'Subskrybuj' na dowolny temat, a wysyłanie/przesyłanie jest takie samo jak 'publikować' na dowolny temat. W przypadku protokołu TLS protokół MQTT nie jest obsługiwany.POP3 (S):Pobieranie za pośrednictwem serwera pop3 oznacza odbieranie poczty bez protokołu TLS lub z nim.RTMP (S):Protokół RTMP lub protokół przesyłania wiadomości w czasie rzeczywistym jest używany głównie do przesyłania strumieniowego multimediów z serwera.RTSP:Curl obsługuje pobieranie wersji 1.0 RTSP.SCP:Curl obsługuje dwie wersje SCP z transferem scp.SFTP:Curl obsługuje SFTP w drugiej wersji SSH.Małe i średnie przedsiębiorstwa (S):Curl obsługuje 1 wersję SMB do pobierania i wysyłania.SMTP (S):Przesyłanie treści na dowolny serwer SMTP oznacza przesyłanie wiadomości e-mail bez lub z TLS.TELNET:Poinformowanie curl o konieczności pobrania adresu URL Telnetu rozpoczyna interaktywną sesję, podczas której przesyła to, co odczyta przez standardowe wejście, i skutkuje tym, co przesyła to serwer.TFTP:Curl może implementować przesyłanie i pobieranie TFTP.

Instalacja polecenia curl

Polecenie curl jest dostarczane z większością plików Linuksa dystrybucje. Ale jeśli system domyślnie nie obsługuje zwijania. Musisz zainstalować go ręcznie. Aby zainstalować curl, wykonaj następujące polecenia:

Zaktualizuj system, wykonując następujące polecenia:

 sudo apt update sudo apt upgrade 

Teraz zainstaluj narzędzie curl, wykonując poniższe polecenie:

 sudo apt install curl 

Sprawdź instalację, wykonując poniższe polecenie:

 curl -version 

Powyższe polecenie wyświetli zainstalowaną wersję polecenia curl.

Pobierz zawartość określonego adresu URL

Aby pobrać zawartość dowolnego konkretnego adresu URL, wykonaj polecenie curl, a po nim adres URL. Rozważ poniższe polecenie:

 curl https://www.javatpoint.com/linux-tutorial 

Powyższe polecenie pobierze dane strony określonej strony. Rozważ poniższy snap danych wyjściowych:

Polecenie Curl w systemie Linux

Z powyższych danych wynika, że ​​pobierane są dane strony o podanym adresie URL. Aby zatrzymać wykonywanie, naciśnij klawisze CTRL+C.

Zapisz dane w określonym pliku

Aby zapisać dane w określonym pliku, przekaż opcję „-o”, a następnie katalog, nazwę pliku i adres URL w następujący sposób:

 curl -o / 

Rozważ poniższe polecenie:

 curl -o /home/javatpoint/Documents/linux.html https://www.javatpoint.com/linux-tutorial 

Powyższe polecenie zapisze dane strony w pliku „linux.html” w katalogu „/home/javatpoint/Documents/”. Rozważ poniższe dane wyjściowe:

Polecenie Curl w systemie Linux

Z powyższego polecenia możemy zobaczyć całkowitą ilość pobranych danych, otrzymanych danych, średni czas i inne statystyki dotyczące danych.

Aby zweryfikować pobrane dane, otwórz plik wykonując polecenie cat

 cd Documents cat linux.html 

Rozważ poniższy snap danych wyjściowych:

Polecenie Curl w systemie Linux

Pobierz plik z Internetu

Jednym z interesujących i fascynujących zastosowań curl jest to, że możemy pobrać plik z Internetu. Aby pobrać plik z Internetu, skopiuj łącze pobierania i wklej je za pomocą polecenia curl. Możemy przekazać także inne argumenty, aby było to bardziej szczegółowe. Na przykład pobierz najnowszą wersję Ubuntu, skopiuj plik link do pobrania Ubuntu z jego oficjalnej strony internetowej i wklej go za pomocą polecenia curl w następujący sposób:

 curl -o /home/javatpoint/Documents/ubuntu20.04.iso https://ubuntu.com/download/desktop/thank-you?version=20.04&architecture=amd64 

Powyższe polecenie pobierze Ubuntu 20.04 do określonego katalogu. Podaj odpowiednie rozszerzenie pliku; w przeciwnym razie pobierze plik w innym formacie. Rozważ poniższe dane wyjściowe:

Polecenie Curl w systemie Linux

Z powyższych danych wyjściowych pobierany jest plik ubuntu.iso. Możemy zobaczyć czas pobierania, rozmiar pliku, prędkość pobierania i inne statystyki. Aby zatrzymać wykonywanie, w dowolnym momencie naciśnij klawisze CTRL+D.

Wznów przerwane pobieranie

Może wystąpić ryzyko, że pobieranie zostanie z jakiegoś powodu przerwane. Pobieranie możemy wznowić za pomocą polecenia curl. Aby wznowić przerwany plik, przekaż opcję „-C” za pomocą polecenia curl w następujący sposób:

 curl -C 

Powyższe polecenie wznowi pobieranie określonego adresu URL.

Pobierz wiele plików

Aby pobrać wiele plików, określ wiele adresów URL oddzielonych spacją w następujący sposób:

 curl -O 

Powyższe polecenie pobierze dane odpowiednio z obu adresów URL.

Zapytanie o nagłówki HTTP

Nagłówki HTTP zawierają dodatkowe informacje; umożliwia serwerowi internetowemu pobranie tych informacji. Aby wysłać zapytanie do nagłówków HTTP ze strony internetowej, wykonaj polecenie z opcją „-I” w następujący sposób:

 curl -I www.javatpoint.com 

Powyższe polecenie wygeneruje poniższe dane wyjściowe:

Polecenie Curl w systemie Linux