GNU/Linux >> Tutoriels Linux >  >> Linux

15 exemples pratiques de commandes Linux cURL (exemples de téléchargement cURL)

cURL est un progiciel composé d'un outil de ligne de commande et d'une bibliothèque pour transférer des données à l'aide de la syntaxe URL.

cURL prend en charge divers protocoles tels que DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet et TFTP.

Cet article fournit 15 exemples pratiques d'utilisation de cURL.

1. Télécharger un seul fichier

La commande suivante obtiendra le contenu de l'URL et l'affichera dans le STDOUT (c'est-à-dire sur votre terminal).

$ curl http://www.centos.org

Pour stocker la sortie dans un fichier, vous pouvez la rediriger comme indiqué ci-dessous. Cela affichera également des statistiques de téléchargement supplémentaires.

$ curl http://www.centos.org > centos-org.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27329    0 27329    0     0   104k      0 --:--:-- --:--:-- --:--:--  167k

2. Enregistrez la sortie cURL dans un fichier

Nous pouvons enregistrer le résultat de la commande curl dans un fichier en utilisant les options -o/-O.

  • -o (o minuscule) le résultat sera enregistré dans le nom de fichier fourni dans la ligne de commande
  • -O (O majuscule) le nom de fichier dans l'URL sera pris et il sera utilisé comme nom de fichier pour stocker le résultat
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

Maintenant, la page gettext.html sera enregistrée dans le fichier nommé "mygettext.html". Vous pouvez également noter que lors de l'exécution de curl avec l'option -o, il affiche la barre de progression du téléchargement comme suit.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 66 1215k   66  805k    0     0  33060      0  0:00:37  0:00:24  0:00:13 45900
100 1215k  100 1215k    0     0  39474      0  0:00:31  0:00:31 --:--:-- 68987

Lorsque vous utilisez curl -O (O majuscule), il enregistre le contenu dans le fichier nommé "gettext.html" lui-même sur la machine locale.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html

Remarque :Lorsque curl doit écrire les données sur le terminal, il désactive le Progress Meter, pour éviter toute confusion lors de l'impression. Nous pouvons utiliser les options ‘>’|’-o’|’-O’ pour déplacer le résultat dans un fichier.

Semblable à cURL, vous pouvez également utiliser wget pour télécharger des fichiers. Reportez-vous aux exemples de wget pour comprendre comment utiliser wget efficacement.

3. Récupérer plusieurs fichiers à la fois

Nous pouvons télécharger plusieurs fichiers en une seule fois en spécifiant les URL sur la ligne de commande.
Syntaxe :

$ curl -O URL1 -O URL2

La commande ci-dessous téléchargera à la fois index.html et gettext.html et les enregistrera sous le même nom dans le répertoire actuel.

$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

Veuillez noter que lorsque nous téléchargeons plusieurs fichiers à partir d'un même serveur, comme indiqué ci-dessus, curl essaiera de réutiliser la connexion.

4. Suivez les en-têtes de localisation HTTP avec l'option -L

Par défaut, CURL ne suit pas les en-têtes HTTP Location. Il est également appelé redirections. Lorsqu'une page Web demandée est déplacée vers un autre endroit, un en-tête HTTP Location sera envoyé en tant que réponse et indiquera l'emplacement de la page Web réelle.

Par exemple, lorsque quelqu'un tape google.com dans le navigateur depuis l'Inde, il sera automatiquement redirigé vers "google.co.in". Cela se fait en fonction de l'en-tête HTTP Location, comme indiqué ci-dessous.

$ curl http://www.google.com

<TITLE>302 Moved</TITLE>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.in/">here</A>

La sortie ci-dessus indique que le document demandé est déplacé vers "http://www.google.co.in/".

Nous pouvons insister pour que curl suive la redirection en utilisant l'option -L, comme indiqué ci-dessous. Maintenant, il va télécharger le code source html de google.co.in.

$ curl -L http://www.google.com

5. Continuer/Reprendre un téléchargement précédent

En utilisant l'option curl -C, vous pouvez continuer un téléchargement qui a déjà été arrêté pour une raison quelconque. Cela sera utile lorsque vous téléchargez des fichiers volumineux et que le téléchargement a été interrompu.

Si nous disons '-C -', alors curl trouvera à partir de là où commencer à reprendre le téléchargement. Nous pouvons également donner un décalage ‘-C ’. Les octets de décalage donnés seront ignorés depuis le début pour le fichier source.

Lancez un gros téléchargement à l'aide de curl et appuyez sur Ctrl-C pour l'arrêter entre les téléchargements.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
##############             20.1%

Remarque :-# est utilisé pour afficher une barre de progression au lieu d'un indicateur de progression.

Maintenant, le téléchargement ci-dessus a été arrêté à 20,1 %. En utilisant "curl -C -", nous pouvons continuer le téléchargement là où il s'est arrêté plus tôt. Maintenant, le téléchargement continue à partir de 20,1 %.

curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
###############            21.1%

6. Limiter le taux de transfert de données

Vous pouvez limiter le montant auquel les données sont transférées à l'aide de l'option –limit-rate. Vous pouvez spécifier le taux de transfert maximum comme argument.

$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

La commande ci-dessus limite le transfert de données à 1000 octets/seconde. curl peut utiliser un taux de transfert plus élevé pendant une courte période. Mais en moyenne, il atteindra 1 000 B/seconde.

Ce qui suit était le compteur de progression pour la commande ci-dessus. Vous pouvez voir que la vitesse actuelle est proche des 1000 octets.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  1 1215k    1 13601    0     0    957      0  0:21:40  0:00:14  0:21:26   999
  1 1215k    1 14601    0     0    960      0  0:21:36  0:00:15  0:21:21   999
  1 1215k    1 15601    0     0    962      0  0:21:34  0:00:16  0:21:18   999

7. Télécharger un fichier uniquement s'il a été modifié avant/après l'heure indiquée

Nous pouvons obtenir les fichiers modifiés après un certain temps en utilisant l'option -z dans curl. Cela fonctionnera à la fois pour FTP et HTTP.

$ curl -z 21-Dec-11 http://www.example.com/yy.html

La commande ci-dessus téléchargera le fichier yy.html uniquement s'il est modifié après la date et l'heure indiquées

$ curl -z -21-Dec-11 http://www.example.com/yy.html

La commande ci-dessus téléchargera le fichier yy.html, s'il est modifié avant la date et l'heure indiquées.

Veuillez vous référer à 'man curl_getdate' pour les différentes syntaxes prises en charge pour l'expression de date

8. Passer l'authentification HTTP dans cURL

Parfois, les sites Web nécessitent un nom d'utilisateur et un mot de passe pour afficher le contenu (peut être fait avec le fichier .htaccess). Avec l'aide de l'option -u, nous pouvons transmettre ces informations d'identification de cURL au serveur Web, comme indiqué ci-dessous.

$ curl -u username:password URL

Remarque :Par défaut, curl utilise l'authentification HTTP de base. Nous pouvons spécifier une autre méthode d'authentification en utilisant –ntlm | –digérer.

9. Télécharger des fichiers à partir du serveur FTP

cURL peut également être utilisé pour télécharger des fichiers à partir de serveurs FTP. Si le chemin FTP donné est un répertoire, par défaut, il listera les fichiers sous le répertoire spécifique.

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

La commande ci-dessus téléchargera le fichier xss.php depuis le serveur ftp et l'enregistrera dans le répertoire local.

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

Ici, l'URL donnée fait référence à un répertoire. Ainsi, cURL listera tous les fichiers et répertoires sous l'URL donnée

Si vous débutez avec FTP/sFTP, consultez le didacticiel ftp sftp pour les débutants.

10. Lister/Télécharger à l'aide de plages

cURL prend en charge les plages à donner dans l'URL. Lorsqu'une plage est donnée, les fichiers correspondant à la plage seront téléchargés. Il sera utile de télécharger des packages à partir des sites miroirs FTP.

$ curl   ftp://ftp.uk.debian.org/debian/pool/main/[a-z]/

La commande ci-dessus répertoriera tous les packages des plages de a à z dans le terminal.

11. Télécharger des fichiers sur le serveur FTP

Curl peut également être utilisé pour télécharger des fichiers sur le serveur FTP avec l'option -T.

$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

La commande ci-dessus téléchargera le fichier nommé myfile.txt sur le serveur FTP. Vous pouvez également télécharger plusieurs fichiers en même temps à l'aide des opérations de plage.

$ curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

En option, nous pouvons utiliser "." pour obtenir l'entrée de STDIN et la transférer vers la télécommande.

$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

La commande ci-dessus obtiendra l'entrée de l'utilisateur à partir de l'entrée standard et enregistrera le contenu sur le serveur ftp sous le nom "myfile_1.txt".

Vous pouvez fournir un "-T" pour chaque URL et la paire spécifie quoi télécharger et où.

12. Plus d'informations à l'aide de l'option Verbose et Trace

Vous pouvez savoir ce qui se passe en utilisant l'option -v. -v option active le mode verbeux et il imprimera les détails

curl -v http://google.co.in

La commande about affichera ce qui suit

* About to connect() to www.google.co.in port 80 (#0)
*   Trying 74.125.236.56... connected
* Connected to www.google.co.in (74.125.236.56) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: www.google.co.in
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Date: Tue, 10 Apr 2012 11:18:39 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< Set-Cookie: PREF=ID=7c497a6b15cc092d:FF=0:TM=1334056719:LM=1334056719:S=UORpBwxFmTRkbXLj; expires=Thu, 10-Apr-2014 11:18:39 GMT; path=/; domain=.google.co.in
.
.

Si vous avez besoin d'informations plus détaillées, vous pouvez utiliser l'option –trace. L'option de trace activera un vidage de trace complet de toutes les données entrantes/sortantes vers le fichier donné

=> Send header, 169 bytes (0xa9)
0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1..
0010: 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c User-Agent: curl
..
0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1.
0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6
0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 ..Host: www.goog
0090: 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.in..Accept
00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a                      : */*....
== Info: HTTP 1.0, assume close after body
<= Recv header, 17 bytes (0x11)
0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK.
0010: 0a

Cette option détaillée et trace sera utile lorsque curl échoue pour une raison quelconque et nous ne savons pas pourquoi.

13. Obtenir la définition d'un mot à l'aide du protocole DICT

Vous pouvez utiliser cURL pour obtenir la définition d'un mot à l'aide du protocole DICT. Nous devons lui transmettre une URL de serveur de dictionnaire.

$ curl dict://dict.org/d:bash

La commande ci-dessus listera la signification de bash comme suit

151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, v. t. [imp. & p. p. {Bashed}; p. pr. & vb. n.
   {Bashing}.] [Perh. of imitative origin; or cf. Dan. baske to
   strike, bask a blow, Sw. basa to beat, bas a beating.]
   To strike heavily; to beat; to crush. [Prov. Eng. & Scot.]
   --Hall Caine.
   [1913 Webster]

         Bash her open with a rock.               --Kipling.
   [Webster 1913 Suppl.]
.
151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, n.
   1. a forceful blow, especially one that does damage to its
      target.
      [PJC]
.
.

Vous pouvez maintenant voir qu'il utilise "The Collaborative International Dictionary of English". De nombreux dictionnaires sont disponibles. Nous pouvons lister tous les dictionnaires utilisant

$ curl dict://dict.org/show:db

jargon "The Jargon File (version 4.4.7, 29 Dec 2003)"
foldoc "The Free On-line Dictionary of Computing (26 July 2010)"
easton "Easton's 1897 Bible Dictionary"
hitchcock "Hitchcock's Bible Names Dictionary (late 1800's)"
bouvier "Bouvier's Law Dictionary, Revised 6th Ed (1856)"

Maintenant, afin de trouver la signification réelle de Bash dans l'ordinateur, nous pouvons rechercher bash dans le dictionnaire "foldoc" comme suit

$ curl dict://dict.org/d:bash:foldoc

Le résultat sera,

bash

   Bourne Again SHell.  {GNU}'s {command interpreter} for {Unix}.
   Bash is a {Posix}-compatible {shell} with full {Bourne shell}
   syntax, and some {C shell} commands built in.  The Bourne
   Again Shell supports {Emacs}-style command-line editing, job
   control, functions, and on-line help.  Written by Brian Fox of
   {UCSB}.

Pour plus de détails concernant DICT, veuillez lire RFC2229

14. Utiliser un proxy pour télécharger un fichier

Nous pouvons spécifier cURL pour utiliser un proxy pour effectuer l'opération spécifique à l'aide de l'option -x. Nous devons spécifier l'hôte et le port du proxy.

$ curl -x proxysever.test.com:3128 http://google.co.in

15. Envoyer un e-mail à l'aide du protocole SMTP

cURL peut également être utilisé pour envoyer du courrier en utilisant le protocole SMTP. Vous devez spécifier l'adresse de départ, l'adresse de destination et l'adresse IP du serveur de messagerie comme indiqué ci-dessous.

$ curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com

Une fois la commande ci-dessus entrée, il attendra que l'utilisateur fournisse les données au courrier. Une fois que vous avez composé votre message, tapez . (point) comme dernière ligne, qui enverra l'e-mail immédiatement.

Subject: Testing
This is a test mail
.

Linux
  1. Exemples de commandes Linux curl – Partie 2

  2. Commande cp sous Linux :7 exemples pratiques

  3. Commande d'arrêt de Linux :5 exemples pratiques

  4. 5 exemples pratiques de la commande dd sous Linux

  5. 10 exemples pratiques de commandes Linux nm

12 exemples pratiques d'In Command sous Linux

Les 50 exemples pratiques de la commande SED sous Linux

15 exemples pratiques de commande Rsync sous Linux

5 exemples pratiques de la commande Tail sous Linux

commande echo sous Linux :7 exemples pratiques

Commande Ping pratique dans des exemples Linux