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

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

Lorsque nous commençons à découvrir les outils de ligne de commande, nous avons tendance à les considérer comme à usage unique. On t'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 leur découvrir de nouvelles utilisations.

Cette fois, nous nous concentrons sur boucle , un outil de transfert de 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 à 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 requête pour afficher ou télécharger du contenu (méthode de requête GET) ou pour publier du contenu via un formulaire sur un site Web (méthode de requête 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 sur Internet, mais wget prend en charge les téléchargements récursifs, le grattage Web et est 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 un large éventail de protocoles. Cela signifie que cURL peut faire des choses plus intéressantes - et voici dix exemples pour le prouver.

1. Obtenez le bulletin météo

Si quelqu'un vous disait 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

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 à partir de 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

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 voudrez 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) fait que cURL enregistre le fichier avec le nom de fichier par défaut (généralement celui du lien lui-même). Si vous vouliez l'enregistrer sous un nom différent, vous utiliseriez un 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, fournissez le chemin après le commutateur -o. Le commutateur -C - permet à cURL de reprendre le téléchargement. Vous le mettriez en pause en appuyant sur Ctrl+C dans le terminal, et le reprendriez en exécutant à nouveau la même commande de téléchargement :

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 en ligne de commande, nous pouvons télécharger par lots toutes les images PNG et JPG à partir d'un blog Tumblr :

curl http://concept-art.tumblr.com/ | grep -o 'src='[^']*.[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 de manière à ce que seuls les fichiers avec les extensions spécifiées soient affichés. Si vous exécutez la commande sans le dernier tube :

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

vous obtiendrez juste 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 plage de pages, à condition que le blog utilise une pagination standard :

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src='[^']*.[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 :

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

Si vous connaissez bien 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 ces jours-ci, mais cela ne veut pas dire 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 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 dans un sous-répertoire, saisissez son nom suivi d'une barre oblique (/).

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 que wget le fait !), il peut toujours télécharger une série 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 en tant que plage. Cette fonctionnalité est parfois appelée « globalisation ». Si les noms de fichiers ne suivent pas un modèle, énumérez-les simplement entre accolades (

-T '{file1.txt,image27.jpg}'

). Inversement, s'ils ont des noms similaires, appliquez la même logique de 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 s'arrête soudainement de fonctionner. Ensuite, Facebook ne se chargera 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 à service unique qui vous indiquent si un site Web est en panne. Ou vous pouvez simplement lancer 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 taper l'URL complète de Facebook ; Ecrivez facebook.com et cURL s'occupera du reste grâce à -L. S'il y a des redirections, elles seront affichées avec leur propre statut HTTP.

Le message qui nous intéresse est « 200 OK », ce qui signifie que tout va bien avec le site Web. S'il est effectivement en panne, vous verrez quelque chose comme ceci :

Les codes d'état HTTP sont aussi informatifs que votre compréhension de ceux-ci le permet. Cette méthode n'est pas totalement 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. Néanmoins, dans la plupart des cas, cela devrait correspondre à la situation réelle et vous permettre de savoir ce qui se passe ou non.

5. Développer 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ères limités. 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, bien pire). Si jamais vous vous méfiez 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';

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 de Linux devrait connaître, et il complète cURL dans ce cas d'utilisation et dans quelques autres. 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 prend en charge 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

Les options -s et -q gardent 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 nombre. Outre les animations, cURL peut afficher de l'art ASCII simple et statique :

Le Web regorge de sites Web avec toutes sortes d'art ASCII : des pièces incroyablement détaillées et de haute qualité aux documents étranges, idiots 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, conservée 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 une farce à vos amis, tout ce qui flotte sur votre bateau.

7. Expérimentez avec les médias sociaux

L'utilisation des médias sociaux depuis le terminal n'a rien de nouveau - nous vous avons déjà montré des clients Twitter en ligne de commande pour Linux. Même si vous ne passerez 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 tout seul ; une combinaison d'outils fait le travail.

Quant à Twitter, il était autrefois possible de le gérer directement depuis le terminal avec cURL. Puis 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, surtout pour un débutant, et elle nécessite une authentification avec la plate-forme publicitaire Twitter. 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';

8. Trouvez votre adresse IP externe

Trouver votre adresse IP locale est assez facile - il suffit de lancer

comment connecter mon téléphone à mon ordinateur
ifconfig

ou consultez votre applet Network Management. 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 depuis le terminal , et cela pourrait être l'une d'entre elles. 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

Il ne vous reste plus qu'à choisir un service. Si vous êtes indécis, incluez-les simplement dans votre alias, en tant que solutions de sauvegarde.

9. Coller du texte et partager des images

Briser votre flux de travail n'est jamais bon pour la productivité et la concentration. Si vous effectuez la plupart de votre travail dans le terminal, passer à un navigateur juste pour partager quelques fichiers peut être peu pratique, voire ennuyeux. Heureusement, certains services de pastebin et de partage de fichiers sont nés pour fonctionner avec cURL, vous pouvez donc les utiliser directement depuis le terminal, sans compte utilisateur.

Clbin et Sprunge.fr 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 'clbin=@image.png' https://clbin.com

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

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

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

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:1=@file.txt' 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 consulté en modifiant le nombre après le

'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 Transfert.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, listez-les les uns après les autres avec l'option -F :

curl -i -F filedata=@/tmp/hello.txt -F filedata=@/tmp/hello2.txt https://transfer.sh/

10. Vérifiez 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 des e-mails, 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 identifiants de connexion à toute personne ayant accès à votre terminal. La première version affiche le nom de l'expéditeur, tandis que la seconde n'imprime que les sujets des e-mails non lus :


curl -u username:password --silent 'https://mail.google.com/mail/feed/atom' | tr -d '
' | 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'

Que peut faire cURL d'autre ?

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 one-liners pratiques avec cURL, comme nous l'avons démontré ici. Beaucoup de ces exemples ont été adaptés de CommandLineFu , une source fantastique de hacks de ligne de commande intelligents, et vous ne devriez pas les considérer comme gravés dans le marbre.

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 commandes cURL suggérées ? Connaissez-vous d'autres utilisations intéressantes de cURL ? Partagez vos astuces dans les commentaires.

Crédits image : Introduction à la ligne de commande par Oussama Khalid via Flickr.

Partager Partager Tweeter E-mail Supprimez ces fichiers et dossiers Windows pour libérer de l'espace disque

Besoin de libérer de l'espace disque sur votre ordinateur Windows ? Voici les fichiers et dossiers Windows qui peuvent être supprimés en toute sécurité pour libérer de l'espace disque.

Lire la suite
Rubriques connexes
  • Linux
  • FTP
  • Gestion des téléchargements
  • Terminal
A propos de l'auteur Ivana Isadora Devcic(24 articles publiés)

Ivana Isadora est une rédactrice et traductrice indépendante, une amoureuse de Linux et une fangirl de KDE. Elle soutient et promeut les logiciels libres et open source, et elle est toujours à la recherche d'applications fraîches et innovantes. Découvrez comment entrer en contact ici .

Plus de Ivana Isadora Devcic

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner