Utilisation de cURL pour télécharger des fichiers distants à partir de la ligne de commande

Le puissant outil en ligne de commande curl peut être utilisé pour télécharger des fichiers à partir de n'importe quel serveur distant. Les utilisateurs de longue date de la ligne de commande savent que cela peut être utile dans de nombreuses situations, mais pour simplifier les choses, beaucoup trouveront que le téléchargement d'un fichier avec curl peut souvent être une alternative plus rapide à l'utilisation d'un navigateur web ou d'un client FTP du côté de l'interface graphique de Mac OS X (ou linux). C'est utile pour les situations locales, mais c'est particulièrement intéressant si vous devez télécharger quelque chose sur un Mac distant lorsque vous êtes connecté par SSH.

Pour les besoins de cette présentation, nous nous concentrerons principalement sur le téléchargement de fichiers à partir des deux protocoles HTTP et SFTP les plus courants, bien qu'il faille noter que cURL supporte beaucoup plus de protocoles. Bien que curl soit facile à utiliser, il est recommandé d'avoir une certaine connaissance de la ligne de commande.

Télécharger les fichiers de correspondance exacte avec curl -O

L'utilisation du drapeau -O majuscule avec curl télécharge le fichier du serveur distant tout en conservant le nom exact du fichier, la syntaxe de base pour cela est la suivante :

curl -O [url]

Cela signifie que si le fichier URL spécifié est nommé "sample.zip", il sera téléchargé avec le nom de fichier "sample.zip", et si le fichier est nommé quelque chose d'énorme et compliqué comme "LongExampleFileNameForiphonologie-v-1-3-51-revision-515b12-readme.txt" sur le serveur distant, il sera enregistré avec ce nom exact sur la machine locale. Les noms de fichiers plus longs sont souvent mieux gérés avec le drapeau -o plutôt que -O, ce dont nous parlerons bientôt.

Les lecteurs réguliers se souviendront peut-être que nous avons utilisé la commande curl -O pour expliquer comment extraire le contenu audio réel d'un fichier de streaming m3u.

Commencer un téléchargement par une boucle indique le pourcentage transféré, le temps passé à télécharger et le temps restant, ainsi que la vitesse de transfert.

La capture d'écran offre une meilleure représentation que l'exemple collé ci-dessous, mais elle ressemble à quelque chose comme ça :

% Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Temps Actuel

Dload Upload Total dépensé Vitesse à gauche

100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

La vitesse de transfert étant indiquée, vous pouvez rediriger la sortie de curl vers /dev/null et l'utiliser pour tester la vitesse de connexion à Internet, mais la commande wget a une barre de transfert plus facile à lire et à suivre, donc wget est mieux adapté à cette tâche.

Enregistrement d'un fichier distant avec un nom différent avec curl -o

L'utilisation d'un drapeau -o en minuscules vous permettra de spécifier un nom de fichier différent pour le fichier téléchargé que celui qui est utilisé sur le serveur distant. Cela peut être utile pour réduire la longueur des noms de fichiers ou simplement pour étiqueter quelque chose de manière à ce qu'il soit plus facile à trouver par vous-même. La syntaxe générale serait :

curl -o [nom court] [url]

Par exemple, si vous souhaitez enregistrer un fichier IPSW iOS que vous avez trouvé listé sur les serveurs Apple sans avoir le long nom complet, vous pouvez utiliser ce qui suit :

curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5,3_7.0.4_11B554a_Restore.ipsw

Le fichier "iPhone5,3_7.0.4_11B554a_Restore.ipsw" sera téléchargé, mais il sera nommé plus court, comme le plus significatif "iPhone5C-704.ipsw".

Si vous préférez ne pas enregistrer le fichier dans le répertoire de travail actuel, indiquez un chemin d'accès dans le nom du fichier, comme cela :

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

Télécharger plusieurs fichiers simultanément avec curl

cURL peut facilement télécharger plusieurs fichiers en même temps, il suffit de spécifier plusieurs URL de cette manière :

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

Pour les fichiers portant des noms différents, ou hébergés sur des serveurs différents, ou dans des chemins de répertoires différents, utilisez l'URL complète, par exemple :

curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt

D'autre part, si les noms de fichiers à télécharger utilisent une dénomination incrémentielle, vous pouvez utiliser des parenthèses pour spécifier une plage de téléchargement, comme cela :

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1 [1-3].txt

Les fichiers fdl-1.1.txt, fd1-1.2.txt et fd1-1.3.txt sont ainsi saisis en même temps sans avoir à spécifier chaque URL unique. Bien entendu, cela ne fonctionne que si les fichiers se trouvent dans le même répertoire et dans le même domaine.

Authentification avec la boucle

Vous pouvez également vous authentifier avec cURL en utilisant le drapeau -u :

curl -u user:pass -O ftp://remote_url/file-to-download.zip

Gardez à l'esprit que bash history stockera le mot de passe en texte clair lorsque vous utilisez -u avec un nom d'utilisateur et un mot de passe spécifiés, ce qui n'est donc pas recommandé dans la plupart des situations. Vous pouvez contourner ce problème en plaçant un espace devant le mot "curl". Si vous n'utilisez pas la barre d'espacement pour préfixer la commande, vous voudrez probablement vider l'historique des commandes par la suite pour être sûr.

Protocoles de curl pris en charge et utilisation au-delà de HTTP et FTP

Comme mentionné précédemment, l'utilisation de cURL va bien au-delà de HTTP et FTP, car l'entrée de la page du manuel de curl mentionne des protocoles supplémentaires dans la description :

curl est un outil permettant de transférer des données depuis ou vers un serveur, en utilisant l'une des méthodes suivantes
les protocoles pris en charge (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,

IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,

TELNET et TFTP).

En outre, vous constaterez que le curl peut également être utilisé pour les demandes PUT et POST, les cookies, les proxies, les tunnels, la reprise des téléchargements, et même la saisie des informations d'en-tête HTTP ou la modification d'un agent utilisateur (en fait l'usurpation) sans qu'il soit nécessaire d'utiliser un navigateur web dédié.

Comme la plupart des utilitaires en ligne de commande, vous pouvez en apprendre beaucoup plus sur le curl en appelant la page de manuel appropriée avec la commande "man curl".

Click to rate this post!
[Total: 1 Average: 4]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *