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.
Option | La description |
-u | pour télécharger des fichiers depuis un serveur FTP |
-C | pour reprendre un téléchargement interrompu |
-o | pour enregistrer le résultat de la boucle commande avec un nom de fichier prédéfini |
-JE | pour obtenir les en-têtes HTTP d'une URL définie |
-O | pour enregistrer le résultat de la boucle commande avec le nom de fichier d'origine |
--libcurl | pour sortir le code source C qui utilise libcurl pour l'option spécifiée |
-X | utiliser 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.