Comment utiliser la commande Curl sous Linux

Un guide complet expliquant l'utilisation de la commande curl pour récupérer des pages Web et télécharger des fichiers directement depuis votre terminal

le boucle command est un autre utilitaire de ligne de commande intéressant que Linux a à vous offrir. boucle La commande permet à l'utilisateur de récupérer des fichiers sur le serveur.

boucle est un choix populaire des développeurs d'applications et des utilisateurs fréquents de Linux en raison de sa prise en charge d'un certain nombre de protocoles tels que RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FICHIER, GOPHER, LDAP, LDAPS, POP3, POP3S, etc.

boucle La commande fait bien plus que simplement récupérer les pages Web pour vous. Connaître les options disponibles avec cette commande la rend plus polyvalente pour votre utilisation. Plongeons dans le tutoriel pour bien comprendre l'utilisation du boucle commande en utilisant quelques brefs exemples.

Installation

Avant d'utiliser le boucle commande, vérifiez s'il est déjà installé sur votre système. Utilisez la commande curl --version pour vérifier si boucle est installé.

Au cas où boucle n'est pas installé, procédez comme suit.

Sur les systèmes basés sur Ubuntu et Debian, utiliser:

sudo apt-get mise à jour
sudo apt-get install curl

Sur les distributions RHEL, CentOs et Fedora, utiliser:

sudo yum installer curl

Utilisez maintenant le curl --version commande pour s'assurer qu'il est correctement installé.

curl --version

Sortir:

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 Date de sortie : 2018-01-24 Protocoles : fichier dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Caractéristiques : AsynchDNS IDN IPv6 Largefile GSS-API NTLMW NTLM SPNEGO_API Kerberos libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$ 

Nous sommes maintenant prêts à utiliser le boucle commander.

Options disponibles avec la commande CURL

Jetons d'abord un coup d'œil à quelques-unes des principales options disponibles avec le boucle commander.

OptionLa description
-upour télécharger des fichiers depuis un serveur FTP
-Cpour reprendre un téléchargement interrompu
-opour enregistrer le résultat de la boucle commande avec un nom de fichier prédéfini
-JEpour obtenir les en-têtes HTTP d'une URL définie
-Opour enregistrer le résultat de la boucle commande avec le nom de fichier d'origine
--libcurlpour sortir le code source C qui utilise libcurl pour l'option spécifiée
-Xutiliser un proxy pour accéder à l'URL
-#pour afficher la barre de progression pour afficher l'état du téléchargement

Récupérer une page Web à l'aide de CURL

le boucle La commande, lorsqu'elle est utilisée sans aucune option, récupère le contenu de l'URL spécifiée dans la commande.

Syntaxe:

boucle [URL]

Exemple:

curl //tout.comment

Sortir:

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;haut:0!important;gauche:0!important;droit:0!important;bas:0!important;marge:0!important;affichage:bloc!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 solide 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}[abonnements -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>[update]{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;affichage:bloc!important;hauteur:100%!important;marge: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([distance]):not([active]){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} 

Ici, le contenu de la page Web est récupéré directement dans votre terminal en tant que code source.

Vous pouvez utiliser des options -o et -O avec le boucle commande pour stocker ce contenu dans un fichier.

Lorsque -o est utilisée, le contenu de l'URL est enregistré dans votre répertoire actuel avec un nom de fichier défini par l'utilisateur.

Syntaxe:

curl -o [nom_fichier défini par l'utilisateur] [URL]

Exemple:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Téléchargement actuel Téléchargement Total dépensé Vitesse restante 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

Dans cet exemple, le contenu de l'URL « allthings.how » est enregistré en tant que fichier HTML nommé ath.html dans mon répertoire de travail actuel. À l'ouverture de ce fichier HTML, je serai redirigé vers la page Web qui est enregistrée.

Téléchargement de fichiers à l'aide de la commande CURL

En utilisant le -O L'option avec la commande curl enregistre également le contenu ou la page Web ou un package téléchargeable sous forme de fichier mais enregistre ce fichier avec son nom d'origine.

Voyons cela à travers un exemple :

Exemple:

Ici, j'ai utilisé le boucle commande avec -O option pour télécharger un package Ubuntu nommé 'cherrytree_0.37.6-1.1_all.deb' à partir du référentiel de packages Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Téléchargement actuel Déchargement total Vitesse restante 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

Sortir:

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

Ainsi, le package est maintenant téléchargé et enregistré dans le répertoire de travail actuel (CWD) avec son nom d'origine.

Affichage d'une barre de progression lors du téléchargement d'un fichier

Il y a une autre modification esthétique disponible tout en utilisant le boucle commande pour télécharger un fichier. Vous pouvez visualiser la progression du téléchargement de votre fichier sous la forme d'une barre de progression sur votre terminal. Il vous suffit d'ajouter le -# option avec votre commande pour télécharger un fichier.

Voyons un exemple de ce tweak.

Syntaxe:

curl -# -O [URL]

Exemple:

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$ 

Sortir:

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

Dans cette sortie, vous pouvez observer que j'ai téléchargé un package nommé 'emacs-defaults_47.0.tar.xz' dans mon CWD et la barre de progression s'affiche dans le terminal pendant le téléchargement.

Reprise du téléchargement interrompu dans CURL

Plusieurs fois, il peut arriver que vous deviez télécharger des fichiers de plus grande taille. Parfois, pour des raisons telles qu'une panne de courant ou une panne de réseau, le téléchargement peut s'interrompre en cours de processus sans télécharger le fichier complet. Même si tu appuies Ctrl+C dans le terminal, le processus est abandonné.

le boucle commande lorsqu'elle est utilisée avec le -C L'option reprend le téléchargement interrompu.

Syntaxe:

curl -C - -O [URL]

Exemple:

Dans cette illustration, j'ai essayé de télécharger l'image ISO Ubuntu 20.04 à partir du site Web d'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 % total % reçu % vitesse moyenne Xferd Heure Heure Heure Téléchargement actuel Téléchargement Total dépensé Vitesse restante 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

Ici, j'ai volontairement interrompu le processus de téléchargement en Ctrl+C.

Maintenant, je vais utiliser le -C option avec le boucle commande pour reprendre le téléchargement interrompu à partir du même site Web source.

Sortir:

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 ** Reprise du transfert depuis position de l'octet 1851392 % Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Déchargement actuel Total dépensé Vitesse gauche 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278

Le téléchargement a été récupéré là où il a été interrompu.

Téléchargement de fichiers à partir d'un serveur FTP à l'aide de CURL

C'est assez facile avec le boucle commande pour télécharger un fichier depuis le serveur FTP à l'aide de la -u option. Vous devez saisir le nom d'utilisateur et le mot de passe dans la commande avant de saisir l'URL.

Syntaxe:

curl -u [nom d'utilisateur]:[mot de passe] [URL]

Pour l'illustration, j'utiliserai un FTP public en ligne.

Exemple:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Total % Reçu % Moyenne Xferd Vitesse Temps Temps Temps Téléchargement actuel Téléchargement Total dépensé Vitesse restante 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

Ici, j'ai téléchargé un fichier nommé '16-Sep-20-16-0-0.csv' à partir de ce serveur ftp et l'ai enregistré avec son nom d'origine dans mon CWD. Je vais vérifier le fichier téléchargé en utilisant le ls commander.

gaurav@ubuntu:~/workspace$ ls -al total 1092 drwxrwxr-x 3 gaurav gaurav 4096 16 septembre 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 Sep 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 16 septembre 11:45 ath.html gaurav@ubuntu:~/workspace$

Télécharger plusieurs fichiers ensemble à l'aide de CURL

Téléchargement de plusieurs fichiers à la fois à l'aide du boucle commande est une tâche très simple. Vous utilisez simplement le -O option avec le boucle commande similaire à celle que nous avons effectuée dans les blocs ci-dessus.

Syntaxe:

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

Exemple:

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 % Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Téléchargement actuel Téléchargement Total dépensé Vitesse restante 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 $ 

Dans cet exemple, j'ai téléchargé deux packages différents à partir du référentiel Ubuntu.

Sortir:

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

Les deux packages sont téléchargés en même temps à l'aide de la commande curl.

Récupérer les en-têtes HTTP d'une URL avec CURL

Les champs d'en-tête HTTP de toute URL contiennent des informations utiles telles que l'agent utilisateur, le type de contenu, l'encodage, etc. Ces fichiers d'en-tête fournissent également des informations sur l'objet envoyé dans le corps du message. Des détails sur la demande et la réponse sont également obtenus à partir de ces en-têtes HTTP.

Vous pouvez utiliser boucle commande avec -JE option pour obtenir ces en-têtes HTTP d'une URL.

Syntaxe:

curl -I [URL]

Exemple:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="Ce n'est pas une politique P3P ! Voir g.co/p3phelp pour plus d'informations." Date : mer 16 sept. 2020 11:17:00 GMT Serveur : gws X-XSS-Protection : 0 X-Frame-Options : SAMEORIGIN Transfert-Encodage : chunked Expire : mer 16 sept 2020 11:17:00 GMT Cache- Contrôle : Set-Cookie privé : 1P_JAR=2020-09-16-11 ; expire=Ven, 16-Oct-2020 11:17:00 GMT ; chemin=/; domaine=.google.com ; Secure Set-Cookie : NID=204=SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-Qb6R7zPoPYJ6dGiG7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-Qb6D7zPoPYJ6dGiG4 expire=Jeu, 18-Mar-2021 11:17:00 GMT ; chemin=/; domaine=.google.com ; HttpOnly gaurav@ubuntu:~/workspace$

Dans cet exemple, j'ai récupéré les en-têtes HTTP de 'www.firefox.com‘.

Récupérer le code source C à l'aide de CURL

Utilisant boucle commande avec le --libcurl L'option peut récupérer le code source C. Cela n'a pas d'utilité significative pour les utilisateurs profanes, mais peut s'avérer très utile pour les programmeurs système, les analystes de sécurité et les développeurs d'applications.

Syntaxe:

curl [URL] > nom de fichier --libcurl [code_filename]

Exemple:

Dans cet exemple, j'ai récupéré le contenu de l'URL tout.comment et l'a stocké dans un fichier nommé gy_ath.html. Le code source C est stocké séparément dans le source.c déposer.

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

Sortir:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Téléchargement actuel Téléchargement Total dépensé Vitesse restante 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

Vérifions maintenant les fichiers téléchargés.

gaurav@ubuntu:~/workspace$ ls -al total 404 drwxrwxr-x 3 gaurav gaurav 4096 16 septembre 17:08 . drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 Sep 16 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 1535 16 septembre 17:13 source.c gaurav@ubuntu:~/workspace$

le source.c fichier contient le code source. Celui-ci peut être affiché sur le terminal à l'aide de la chat commander. J'ai mis quelques lignes de la sortie dans le bloc ci-dessous.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********** Exemple de code généré par l'outil de ligne de commande curl ********** * Toutes les options curl_easy_setopt() sont documentées à : * //curl.haxx.se/libcurl/c/curl_easy_setopt.html ******************************** *******************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; CURL *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);

Utiliser un proxy dans CURL pour accéder à une URL

Comme évoqué dans l'introduction, le boucle command prend en charge un large éventail de protocoles tels que FTP, SMTP, HTTPS, SOCKS, etc. Parfois, l'utilisation d'un serveur proxy pour transférer des fichiers devient importante lorsque vous souhaitez améliorer la vitesse de votre transfert et protéger votre identité. boucle La commande peut facilement être utilisée pour transférer des fichiers sur le serveur proxy en ajoutant le -X option à cela.

Exemple:

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

Dans l'exemple ci-dessus, j'ai supposé que votre proxy ne nécessite aucune authentification. Dans le cas où le proxy nécessite une authentification pour démarrer le transfert, vous pouvez utiliser la commande suivante.

curl -u [nom d'utilisateur]:[mot de passe] -x [adresse_proxy]:[port] [URL]

En utilisant cette méthode simple, nous pouvons transférer des fichiers via un serveur proxy avec l'option -X utilisé avec le boucle commander.

Conclusion

Dans ce bref tutoriel, nous avons appris comment boucle La commande s'avère utile pour télécharger du contenu directement depuis votre terminal. Nous avons également découvert les différentes options disponibles avec cette commande à utiliser pour diverses tâches.