Obtenez CURLy: 10 choses utiles que vous pouvez faire avec cURL

Lorsque nous commençons à nous familiariser avec les outils de ligne de commande, nous avons tendance à les considérer comme à usage unique. On vous apprend que cat imprime le contenu du fichier, ls répertorie tous les éléments d’un répertoire, et du montre l’utilisation de l’espace disque. Cependant, de nombreux outils de ligne de commande ont des dizaines d’options, toutes soigneusement décrites dans leur man des dossiers. Certains d’entre eux peuvent faire des merveilles lorsqu’ils sont combinés avec d’autres commandes.

Bien sûr, il est déraisonnable de s’attendre à ce que quiconque se souvienne de chaque option. Dans cet esprit, il est bon de rafraîchir occasionnellement notre connaissance des commandes Linux, car vous pourriez découvrir de nouvelles utilisations pour elles.

curl-commandes-introduction

Cette fois, nous nous concentrons sur boucle, un outil pour transférer des données via un certain nombre de protocoles Internet tels que HTTP (S), FTP, Telnet, LDAP, IMAP, POP3, SMTP, etc.

En termes simplifiés, cURL effectue diverses requêtes d’un client vers un serveur, établissant une connexion entre eux au moyen d’un protocole spécifique et de ses méthodes associées. Par exemple, en tant que client HTTP, cURL peut envoyer une demande pour afficher ou télécharger du contenu (méthode de demande GET), ou pour publier du contenu via un formulaire sur un site Web (méthode de demande POST). De nombreuses applications et services Web permettent à cURL d’interagir avec leurs API (Application Programming Interface).

Parce que leurs fonctionnalités se chevauchent dans une certaine mesure, cURL et wget sont souvent comparés l’un à l’autre. Les deux outils peuvent télécharger du contenu depuis Internet, mais wget prend en charge les téléchargements récursifs, le scraping Web et semble généralement plus simple à utiliser. Si vous souhaitez simplement télécharger des fichiers à partir du terminal, wget est probablement un meilleur choix.

D’un autre côté, si vous avez besoin de méthodes d’authentification HTTP avancées et que vous souhaitez télécharger des fichiers ainsi que les télécharger, cela vaut la peine d’apprendre à cURL. De plus, wget ne prend en charge que HTTP (S) et FTP, tandis que cURL couvre une large gamme de protocoles. Cela signifie que cURL peut faire plus de choses intéressantes – et voici dix exemples pour le prouver.

1. Obtenez le bulletin météo

Si quelqu’un vous a dit de vérifier la météo depuis le terminal, vous vous attendriez à voir des chiffres ennuyeux. Pas avec cette commande.

curl http://wttr.in/LOCATION

curl-commandes-météo

Les informations sont fournies par une application CLI appelée nous allons, mais si vous ne souhaitez pas l’installer, cURL peut récupérer les prévisions depuis son interface Web wttr.in. Tout ce dont il a besoin, c’est de l’emplacement pour lequel vous voulez les prévisions. Tapez simplement le nom d’une ville, son code d’aéroport ou votre adresse IP actuelle. Une nouvelle fonctionnalité affiche les informations sur les phases de la lune si vous tapez:

curl wttr.in/Moon

curl-commandes-phase de lune

2. Télécharger des fichiers et reprendre les téléchargements

Le téléchargement de fichiers est quelque chose que nous faisons habituellement dans le navigateur. Parfois, vous souhaiterez utiliser un gestionnaire de téléchargement; par exemple, lorsque vous téléchargez plusieurs fichiers à la fois, ou lorsque vous souhaitez suspendre les téléchargements. Bien que cURL ne soit pas un choix populaire pour les téléchargements simultanés (wget est recommandé à la place), vous pouvez toujours l’utiliser à cette fin en combinant ses puissantes options (commutateurs). Vous aurez d’abord besoin d’un lien direct vers le fichier. Dans cet exemple, nous utiliserons un PDF du magazine Linux Voice.

curl -O -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

Le commutateur O majuscule (-O) permet à cURL d’enregistrer le fichier avec le nom de fichier par défaut (généralement celui du lien lui-même). Si vous souhaitez l’enregistrer sous un autre nom, vous devez utiliser o minuscule suivi du nouveau nom:

curl -o magazine.pdf -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

Par défaut, les fichiers sont enregistrés dans le répertoire courant (vérifiez-le avec le pwd commander). Pour les enregistrer ailleurs, indiquez le chemin après le commutateur -o. Le commutateur -C – permet à cURL de reprendre le téléchargement. Vous devez le suspendre en appuyant sur Ctrl + C dans le terminal et reprendre en exécutant à nouveau la même commande de téléchargement:

curl-commandes-reprendre-télécharger

cURL affiche la progression du téléchargement sous forme de tableau, avec des colonnes contenant des informations sur la vitesse de téléchargement, la taille totale du fichier, le temps écoulé, etc. Si vous n’aimez pas cela, vous pouvez opter pour une barre de progression plus simple en ajoutant – # ou –progress-bar à votre commande cURL.

Pour télécharger plusieurs fichiers à la fois, il suffit de lister les liens les uns après les autres:

curl -O file1.txt -O file2.pdf -O file3.zip

À l’aide d’autres outils de ligne de commande, nous pouvons télécharger par lots toutes les images PNG et JPG d’un blog Tumblr:

curl http://concept-art.tumblr.com/ | grep -o 'src="https://www.moyens.net/[^"]*.[png-jpg]"' | cut -d" -f2 | while read l; do curl "$l" -o "${l##*/}"; done

Dans ce cas, cut et grep collecter des informations sur les noms de fichiers et les formater afin que seuls les fichiers avec les extensions spécifiées soient affichés. Si vous exécutez la commande sans le dernier canal:

curl http://concept-art.tumblr.com/ | grep -o 'src="https://www.moyens.net/[^"]*.[png-jpg]"' | cut -d" -f2

vous obtiendrez simplement une liste de fichiers qui répondent à nos critères, mais ils ne seront pas réellement téléchargés. cURL peut obtenir une liste d’images à partir d’une gamme de pages, à condition que le blog utilise la pagination standard:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src="https://www.moyens.net/[^"]*.[png-jpg]"' | cut -d" -f2

Vous pouvez modifier la plage en changeant les nombres entre crochets. Encore une fois, cette commande ne listerait que les images; pour les télécharger, exécutez la commande complète dans le répertoire où vous souhaitez enregistrer les images:

En relation :  Pixel 4 contre Pixel 4 XL : ce que vous devez savoir

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src="https://www.moyens.net/[^"]*.[png-jpg]"' | cut -d" -f2 | while read l; do curl "$l" -o "${l##*/}"; done

Si vous maîtrisez bien les expressions régulières, vous pouvez améliorer l’apparence et l’efficacité de cette commande et partager le résultat dans les commentaires.

3. Gérer les fichiers sur un serveur FTP

Nous n’entendons pas beaucoup parler de FTP de nos jours, mais cela ne signifie pas qu’il est obsolète. En fait, de nombreux projets open source et distributions Linux partagent leurs logiciels sur des serveurs FTP. Étant donné que FTP est pris en charge par cURL, vous pouvez l’utiliser comme un simple client FTP pour télécharger et télécharger des fichiers. Vous pouvez parcourir les fichiers sur un serveur FTP en accédant aux répertoires:

curl ftp://ftp.debian.org/debian/

Pour entrer un sous-répertoire, tapez son nom suivi d’une barre oblique (/).

curl-commandes-ftp-parcourir

Le téléchargement de fichiers est similaire aux téléchargements HTTP décrits dans la section précédente. Vous pouvez utiliser -o ou -O et ajouter -C – si vous souhaitez suspendre les téléchargements.

curl -O ftp://ftp.heanet.ie/mirrors/linuxmint.com/stable/17.3/linuxmint-17.3-kde-64bit.iso

Bien que cURL ne prenne pas en charge les téléchargements récursifs (rappelez-vous, wget le fait!), Il peut toujours télécharger une gamme de fichiers à la fois. La seule condition est que les noms de fichiers suivent un modèle. Par exemple, nous pourrions télécharger à partir d’un serveur d’hébergement de fonds d’écran où les fonds d’écran sont tous nommés «wallpaperNUMBER»:

curl -O ftp://ftp.myserver.com/files/wallpaper[0-120].jpg

Certains serveurs FTP nécessitent une authentification avant de pouvoir télécharger des fichiers. cURL vous permet de vous connecter avec l’option -u (utilisateur):

curl -u username:password -O ftp://ftp.protectedserver.com/files/example.txt

Vous pouvez également télécharger des fichiers sur un serveur FTP avec l’option -T (transfert):

curl -u username:password -T /home/user/Documents/test.txt ftp://ftp.myserver.com

Ici, vous pouvez également définir plusieurs fichiers comme une plage. Cette fonctionnalité est parfois appelée «globbing». Si les noms de fichiers ne suivent pas un modèle, répertoriez-les simplement entre crochets (-T "{file1.txt,image27.jpg}"). Inversement, s’ils ont des noms similaires, appliquez la même logique que l’exemple de téléchargement Tumblr et utilisez des crochets (-T "photo[1-50].jpg"). Assurez-vous de fournir le chemin d’accès complet aux fichiers s’ils ne se trouvent pas dans votre répertoire actuel.

4. Vérifiez si un site Web est en panne

Nous y avons tous été. Un site Web dont vous avez absolument besoin cesse soudainement de fonctionner. Ensuite, Facebook ne se charge pas. Face à un vrai problème du premier monde, que faites-vous?

Vous pouvez le rechercher sur Google, demander à un ami de le tester pour vous ou utiliser l’un de ces sites à diffusion unique qui vous indiquent si un site Web est en panne. Ou vous pouvez simplement démarrer le terminal et exécuter cURL:

curl -Is https://www.twitter.com -L | grep HTTP/

Le commutateur I majuscule (-I) vérifie l’en-tête HTTP d’une page Web et l’option -L (emplacement) est ajoutée pour que cURL suive les redirections. Cela signifie que vous n’avez pas besoin de saisir l’URL Facebook complète; Ecrivez facebook.com et cURL s’occupe du reste grâce à -L. S’il y a des redirections, elles seront affichées avec leur propre statut HTTP.

curl-commandes-http-status

Le message qui nous intéresse est « 200 OK », ce qui signifie que tout va bien avec le site Web. Si c’est effectivement le cas, vous verrez quelque chose comme ceci:

curl-commandes-http-status-down

Les codes d’état HTTP ne sont que des informations que votre compréhension permet. Cette méthode n’est pas complètement fiable, car un site Web peut renvoyer un code d’état indiquant une demande traitée avec succès, mais il sera vide lorsque vous l’ouvrirez dans le navigateur. Pourtant, dans la plupart des cas, cela devrait correspondre à la situation réelle et vous informer de ce qui est en hausse ou en baisse.

5. Développez les URL raccourcies

Les URL raccourcies ne sont pas intrinsèquement mauvaises. Sans eux, il serait difficile de partager des liens sur Twitter et d’autres réseaux sociaux à caractère limité. Certains services de raccourcissement d’URL offrent également des analyses utiles. Mais il y a toujours un risque que quelqu’un essaie de cacher du contenu malveillant derrière une URL raccourcie, ou qu’un troll masque un Rickroll (ou quelque chose de bien pire). Si vous vous sentez soupçonneux d’une URL raccourcie pour une raison quelconque, cURL peut vous aider à la développer et à découvrir où elle mène exactement:

curl -sIL http://buff.ly/1lTcZSM | grep ^Location;

ou

curl -sI http://buff.ly/1lTcZSM | sed -n 's/Location: *//p';

curl-commandes-expand

Vous pouvez combiner cURL avec grep ou sed; la principale différence réside dans le formatage. Sed est l’un de ces outils que tout utilisateur Linux devrait connaître, et il complète cURL dans ce cas et dans quelques autres cas d’utilisation. N’oublions pas que cURL peut télécharger des fichiers à partir d’une URL raccourcie (à condition que l’URL pointe réellement vers un fichier):

curl -L -o filename.txt http://short.url

La syntaxe est la même que pour les autres téléchargements cURL, et l’option -L s’occupe de la redirection d’une URL raccourcie vers l’URL d’origine.

6. Montrez votre appréciation pour l’art ASCII

Certes, ce n’est pas particulièrement utile, mais ça a l’air cool. Avec l’aide de pv, un utilitaire pour surveiller la progression des données, cURL peut afficher des animations ASCII dans le terminal.

curl -s http://artscene.textfiles.com/vt100/wineglas.vt | pv -L9600 -q

curl-commandes-ascii-animation

Les options -s et -q maintiennent les deux commandes en mode silencieux (silencieux). L’option -L fait ici référence à la commande pv et vous permet de modifier le taux de transfert des données en octets par seconde. En d’autres termes, si l’animation se déplace trop rapidement ou trop lentement, essayez de jouer avec ce numéro. Outre les animations, cURL peut afficher de l’art ASCII simple et statique:

curl-commandes-asciiart

Le Web a de nombreux sites Web avec toutes sortes d’art ASCII: des pièces incroyablement détaillées et de haute qualité au matériel étrange, idiot et même NSFW. Cette technique d’art numérique remonte aux années 1960 et fait aujourd’hui partie de la culture et de l’histoire d’Internet, maintenue vivante dans de nombreuses collections et outils qui vous permettent de convertir du texte et des images en art ASCII. Vous pouvez l’utiliser pour décorer votre terminal ou pour faire des farces à vos amis – tout ce qui fait flotter votre bateau.

En relation :  Pourquoi xVideoServiceThief est le gestionnaire de téléchargement ultime pour les vidéos en ligne

7. Expérimentez avec les médias sociaux

L’utilisation des médias sociaux à partir du terminal n’a rien de nouveau – nous vous avons déjà montré des clients Twitter en ligne de commande pour Linux. Bien que vous ne passiez probablement pas à cURL comme outil de socialisation en ligne, il est bon de savoir que vous pouvez publier sur Facebook avec, comme décrit ici. Vous remarquerez que, techniquement, cURL ne le fait pas seul; une combinaison d’outils fait le travail.

curl-facebook11

Quant à Twitter, il était auparavant possible de le gérer directement depuis le terminal avec cURL. Ensuite, Twitter a changé son API, et maintenant il y a un client cURL spécial pour Twitter appelé Twurl. Ce n’est pas la chose la plus simple à utiliser, en particulier pour un débutant, et cela nécessite une authentification avec Twitter Ad Platform. Cela a du sens si vous êtes un développeur ou un utilisateur avancé, mais pas tellement si vous souhaitez simplement tweeter à partir de la ligne de commande. Pourtant, il existe des moyens de s’amuser avec Twitter. Vous pouvez utiliser cURL pour vérifier le nombre d’abonnés d’un utilisateur:

curl -s https://twitter.com/username | grep -o '[0-9,]* Followers';

curl-commandes-twitter-followers

8. Trouvez votre adresse IP externe

Trouver votre adresse IP locale est assez facile – lancez simplement ifconfig ou consultez votre applet de gestion de réseau. Pour l’IP externe, la plupart des gens utilisent des sites Web spécialisés pour obtenir ces informations. Pourtant, certaines choses sont simplement plus faciles à faire à partir du terminal, et cela pourrait être l’un d’entre eux. Vous pouvez également créer un alias pour la commande cURL. Il existe plusieurs services en ligne qui coopèrent avec cURL:

curl ipinfo.io
curl -s https://4.ifcfg.me
curl -s http://whatismyip.akamai.com
curl ifconfig.me
curl -s icanhazip.com

Certains peuvent vous en dire plus sur n’importe quelle adresse IP externe:

curl ipinfo.io/207.46.13.41
curl ifconfig.me/207.46.13.41

curl-commandes-ipaddress

Il vous suffit de choisir un service. Si vous n’êtes pas indécis, incluez-les tous dans votre alias, en tant que solutions de sauvegarde.

9. Coller du texte et partager des images

Rompre votre flux de travail n’est jamais bon pour la productivité et la concentration. Si vous effectuez la majeure partie de votre travail dans le terminal, le passage à un navigateur uniquement pour partager quelques fichiers peut être impossible, voire ennuyeux. Heureusement, certains services pastebin et de partage de fichiers sont nés pour fonctionner avec cURL, vous pouvez donc les utiliser directement depuis le terminal, sans compte d’utilisateur.

Clbin et Sprunge.us ont une syntaxe similaire. Avec Clbin, vous dirigez un fichier local ou la sortie d’une commande, et il renvoie un lien vers votre texte téléchargé:

cat textfile.txt | curl -F 'clbin=<-' https://clbin.com

Il prend également en charge les téléchargements d'images (PNG, JPG et GIF):

curl -F '[email protected]' https://clbin.com

Si vous souhaitez utiliser Sprunge.us à la place, tapez:

cat textfile.txt | curl -F 'sprunge=<-' http://sprunge.us

Sprunge.us ne prend pas en charge les téléchargements d'images pour l'instant.

Ix.io est basé sur le même principe que les deux services précédents, avec quelques fonctionnalités supplémentaires. Pour télécharger un fichier, tapez:

cat file.txt | curl -F 'f:1=<-' ix.io

ou

curl -F 'f:[email protected]' ix.io

Lorsque vous obtenez un lien vers le texte téléchargé, vous pouvez modifier son URL pour afficher la coloration syntaxique (avec ix.io/yourpaste+, ix.io/yourpaste/, ou ix.io/yourpaste/language pour un langage de script ou de programmation spécifique). Il est également possible de limiter le nombre de fois qu'un lien peut être affiché en modifiant le nombre après la 'read:1' valeur:

cat file.txt | curl -F 'f:1=<-' -F 'read:1=2' ix.io

Ix.io est principalement destiné aux fichiers texte tels que le code source ou les journaux système. Si vous souhaitez télécharger une variété de formats de fichiers, utilisez Transfer.sh. Il prend en charge les images, le cryptage des fichiers et conserve vos fichiers en ligne pendant deux semaines. Vous pouvez télécharger jusqu'à 5 Go de données sur Transfer.sh. Voici comment:

curl --upload-file bunnies.jpg https://transfer.sh/bunnies.jpg

Vous êtes libre de définir le nom du fichier téléchargé. Pour télécharger plusieurs fichiers, répertoriez-les l'un après l'autre avec l'option -F:

curl -i -F [email protected]/tmp/hello.txt -F [email protected]/tmp/hello2.txt https://transfer.sh/

10. Vérifier le courrier non lu sur GMail

Il y a un énorme potentiel à débloquer dans cURL si vous êtes prêt à vous plonger dans les détails des protocoles liés aux e-mails (SMTP, POP, IMAP). Pour une vérification rapide par e-mail, cette commande fera l'affaire. Il analyse votre flux GMail et formate la sortie (objet et expéditeur de l'e-mail) avec tr, awk, sed et / ou grep commandes. Notez que cette solution est extrêmement dangereuse car elle expose vos informations de connexion à toute personne ayant accès à votre terminal. La première version affiche le nom de l'expéditeur, tandis que la seconde imprime uniquement les sujets des e-mails non lus:

curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d 'n' | awk -F '' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/


curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | grep -oPm1 "(?<=)[^<]+" | sed '1d'

curl-commandes-check-gmail

Que peut faire cURL?

cURL est rarement utilisé comme commande autonome. La plupart des gens l'utilisent dans le cadre d'un script ou d'une application. Pourtant, il est possible de créer des monolignes pratiques avec cURL, comme nous l'avons démontré ici. Beaucoup de ces exemples ont été adaptés de CommandLineFu, une fantastique source de hacks intelligents en ligne de commande, et vous ne devriez pas les considérer comme figés.

Avec suffisamment de connaissances et d'expérience, nous pouvons modifier chaque commande, la formater différemment ou la remplacer complètement par une meilleure solution. Pouvez-vous améliorer nos suggestions de commandes cURL? Connaissez-vous d'autres utilisations intéressantes de cURL? Partagez vos conseils dans les commentaires.

Crédits image: Présentation intérieure de la ligne de commande par Osama Khalid via Flickr.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.