cURL en 16 exemples


sysadmin_curl

Curl URL Request Library est un ensemble formé d’un outil en ligne de commandes et d’une bibliothèque de fonctions destiné à construire des requêtes sur des URLs. Très souvent utilisé pour faire du debug à l’ancienne en HTTP sur une web app, il supporte un nombre impressionnant de protocoles : DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet et TFTP. Rien que ça ! Je vous propose dans cet article une série d’exemples d’exploitation de cURL qui vous serviront tous les jours.

Télécharger un fichier

curl http://www.centos.org

Télécharger plusieurs fichiers d’un coup

Ce sont des O majuscule, pas des 0 :

curl -O URL1 -O URL2

Reprendre un téléchargement

curl -C - -O http://releases.ubuntu.com/14.10/ubuntu-14.10-desktop-amd64.iso

Pourquoi -C – au lieu de -C tout court ? Et bien vous avez la possibilité de spécifier un offset pour la reprise du téléchargement, offset qui remplace le deuxième tiret. Très utile si vous êtes un effrayant robot capable de calculer des offsets à la volée.

Limiter l’utilisation de la bande passante

Mais qui donc veut limiter sa vitesse de téléchargement ? Et bien plein de monde en fait et pour tout un tas de bonnes raisons : ne pas écraser la bande passante lorsqu’on télécharge un ISO depuis la plateforme de prod, ne pas tuer la session de Skype du boss, enfin, tout des trucs comme ça qui peuvent vous sauver la vie.

curl --limit-rate 1000B -O http://releases.ubuntu.com/14.10/ubuntu-14.10-desktop-amd64.iso

Fournir des identifiants

Authentification HTTP basique :

curl -u utilisateur:mdp URL

Authentification NTLM (protocole propriétaire de Microsoft pour IIS) :

curl --ntlm -u utilisateur:mdp URL

Authentification sécurisée (les mots de passe ne circulent pas en clair) :

curl --digest -u utilisateur:mdp URL

Utiliser un proxy

Ah le bon vieux proxy…

curl -x proxyserver.test.com:3128 http://www.perdu.com

Ne télécharger que l’entête (header)

Utile pour savoir si une URL est valide et accessible :

curl -I http://releases.ubuntu.com/14.10/ubuntu-14.10-desktop-amd64.iso

Mode verbeux et traçage

Deux modes qui vous seront bien utiles un jour !

Verbeux :

curl -v http://www.perdu.com


sysadmin_curl_verbeux

Trace :

curl --trace /tmp/phat http://www.perdu.com
== Info: About to connect() to www.perdu.com port 80 (#0)
== Info:   Trying 208.97.177.124...
== Info: connected
== Info: Connected to www.perdu.com (208.97.177.124) port 80 (#0)
=> Send header, 77 bytes (0x4d)
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
0020: 2f 37 2e 32 36 2e 30 0d 0a 48 6f 73 74 3a 20 77 /7.26.0..Host: w
0030: 77 77 2e 70 65 72 64 75 2e 63 6f 6d 0d 0a 41 63 ww.perdu.com..Ac
0040: 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d 0a          cept: */*....

Téléchargement descendant en FTP

curl -u utilisateur:mdp -O ftp://foo.bar/grofichier.gz

Téléchargement montant en FTP

curl -u utilisateur:mdp -T /home/titine/moimoimoi.mpg -O ftp://foo.bar/

Utiliser des jokers dans les URLs

Utile pour farfouiller sur un FTP et récupérer plusieurs ISOs d’un coup :

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

Téléchargement conditionnel

Par exemple, ne télécharger un fichier que s’il a été modifié après une date donnée :

curl -z 19-Avr-14 http://www.sumsang.com/drivers/superfoo.tgz

Ne télécharger un fichier que s’il a été modifié avant une date donnée :

curl -z -19-Avr-14 http://www.sumsang.com/drivers/superfoo.tgz

Suivre les redirections (HTTP 302)

Par défaut, cURL ne suit pas les redirections HTTP. Ce comportement peut être modifié grâce à -L :

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

Rediriger la sortie de cURL vers un fichier

Par défaut, cURL envoie tout sur la sortie standard, ce qui ne correspond pas forcément à ce qu’on veut. Heureusement, les options -o et -O sont à notre disposition :

-o : le fichier est sauvegardé sous le nom indiqué sur la ligne de commandes.

curl -o cours_de_math.avi http://www.grosplosplos.com/videox/tatiana_panpan.avi

-O : le fichier est sauvegardé sous le nom indiqué dans l’URL.

curl -O http://releases.ubuntu.com/14.10/ubuntu-14.10-desktop-amd64.iso

Envoyer un e-mail

cURL étant capable d’utiliser le protocole SMTP, vous pouvez vous en servir afin d’envoyer des e-mails. Je ne sais pas si c’est utile, mais en tout cas, ça a du style !

curl --mail-from obama@maisonblanche.gov --mail-rcpt fhollande@wanadoo.fr smtp://mailpantsu.co.jp

Obtenir la définition d’un mot à l’aide du protocole DICT

Cherchons la définition du mot cute :

curl dict://dict.org/d:cute
220 pan.alephnull.com dictd 1.12.1/rf on Linux 3.14-1-amd64  <10877735.19755.1423403433@pan.alephnull.com>
250 ok
150 1 definitions retrieved
151 "Cute" gcide "The Collaborative International Dictionary of English v.0.48"
Cute \Cute\ (k[=u]t), a. [An abbrev. of acute.]
   1. Clever; sharp; shrewd; ingenious; cunning. [Colloq.]
      [1913 Webster]

   2. pleasantly attractive, in a delicate way; -- said of
      children, young ladies, pet animals and some objects, but
      seldom of adults; as, a cute child; a cute kitten; a cute
      little house; a cute statue.
      [PJC]

   3. smart-alecky or impertinent; as, a cute remark.
      [PJC]

   4. affectedly clever. --RHUD
      [PJC]
.
250 ok [d/m/c = 1/0/18; 0.000r 0.000u 0.000s]
221 bye [d/m/c = 0/0/0; 0.000r 0.000u 0.000s]

Sources

Pense-bête, cheat sheet


davechild_linux-command-line.600
Fourre-tout Linux (bash, nano, grep, screen, ls, permissions, …)

ankushagarwal11_curl-cheat-sheet.600
cURL