Objectifs
- Télécharger des fichiers depuis Internet avec
wget. - Interagir avec des APIs web et transférer des données avec
curl. - Copier des fichiers de manière sécurisée sur un réseau avec
scpetrsync. - Effectuer des diagnostics réseau de base (ex: tester un port) avec
nc.
Explications détaillées
Notions clés
La ligne de commande est un outil exceptionnel pour interagir avec le réseau. Voici les commandes les plus courantes.
wget : Le téléchargeur simple
wget est un outil simple et robuste dont le but principal est de télécharger des fichiers depuis le web.
wget URL: Télécharge le fichier à l’URL donnée.-c: Continue un téléchargement interrompu.-O nom_fichier: Sauvegarde sous un nom de fichier différent.
curl : Le couteau suisse du transfert de données
curl (Client URL) est un outil extrêmement puissant et polyvalent pour transférer des données. Il supporte des dizaines de protocoles (HTTP, HTTPS, FTP, etc.) et est l’outil de choix pour interagir avec des APIs.
curl URL: Affiche le contenu de l’URL sur la sortie standard.-o fichier: Écrit la sortie dans un fichier (minuscule o).-O: Sauvegarde dans un fichier portant le même nom que le fichier distant (majuscule O).-L: Suit les redirections HTTP.-X METHODE: Spécifie la méthode HTTP (GET,POST,PUT,DELETE).-H "Header: Valeur": Ajoute un en-tête HTTP.-d 'data': Envoie des données dans une requêtePOST.
scp et rsync : La copie sécurisée
Pour copier des fichiers vers ou depuis un serveur distant, on utilise des outils qui s’appuient sur SSH (Secure Shell).
scp(Secure Copy) : Simple et efficace pour copier un ou plusieurs fichiers. La syntaxe est similaire àcp.scp source.txt user@serveur:/chemin/destination/rsync: Bien plus puissant pour synchroniser des dossiers entiers. Il ne transfère que les différences, ce qui le rend très rapide après la première copie. C’est l’outil à privilégier pour les sauvegardes.rsync -avz source/ user@serveur:/destination/-a: mode archive (préserve tout),-v: verbeux,-z: compresse pendant le transfert.
nc (netcat) : Le débogueur réseau
netcat est un outil de bas niveau pour lire et écrire des données sur des connexions réseau TCP ou UDP. Son usage le plus simple est de tester si un port est ouvert sur un serveur.
nc -zv host port: Tente de se connecter au port.-zscanne sans envoyer de données,-vest verbeux.
Syntaxe / Usages
# Télécharger une image avec wget
wget https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
# Faire un appel API simple avec curl
curl -L https://api.github.com/users/torvalds
# Envoyer du JSON à une API avec curl
curl -X POST -H "Content-Type: application/json" -d '{"nom":"test"}' https://httpbin.org/post
# Copier un fichier de log vers un serveur
scp mon_app.log admin@serveur.exemple.com:/var/log/
# Synchroniser un dossier de projet vers un serveur de déploiement
rsync -avz mon_projet/ deploy@serveur.exemple.com:/var/www/mon_projet/
# Tester si un serveur web est accessible sur le port HTTPS
nc -zv github.com 443
# -> Connection to github.com port 443 [tcp/https] succeeded!
Bonnes pratiques
- Utilisez
curlpour les APIs et les interactions complexes. Utilisezwgetpour les téléchargements simples de fichiers. - Préférez
rsyncàscpdès que vous devez copier plus qu’un simple fichier. C’est plus efficace et plus flexible. - Dans les scripts, utilisez toujours des timeouts pour vos commandes réseau (
curl --connect-timeout 10 ...) afin d’éviter que votre script ne reste bloqué indéfiniment. - Pour
curl, utilisez-fou-sSen combinaison avec des tests sur le code de retour pour gérer les erreurs HTTP.
Pièges courants
curlqui inonde le terminal : Par défaut,curlécrit surstdout. Si vous téléchargez un gros fichier binaire, il va remplir votre console de caractères illisibles. Pensez à utiliser-oou-O.- Les slashs de fin avec
rsync:rsync -a source/ dest/(avec un/à la fin de la source) copie le contenu desourcedansdest.rsync -a source dest/(sans/) copie le dossiersourcelui-même dansdest. C’est une différence subtile mais cruciale.
Exercices
-
Téléchargement :
- Utilisez
wgetpour télécharger la page d’accueil du siteexample.comet la sauvegarder dans un fichierexemple.html.
- Utilisez
-
Appel API :
- Utilisez
curlpour interroger l’API publiquehttps://api.coindesk.com/v1/bpi/currentprice/EUR.json. - Utilisez un pipe avec
jq(si installé) ougreppour extraire uniquement le taux de change du Bitcoin en EUR.
- Utilisez
-
Test de port :
- Utilisez
ncpour vérifier si votre machine locale a le port 22 (SSH) ouvert. (nc -zv localhost 22). - Testez ensuite un port qui est probablement fermé, comme le port 12345.
- Utilisez
-
Transfert de fichier (si vous avez accès à un serveur distant) :
- Créez un fichier
test_transfert.txt. - Utilisez
scppour le copier sur votre serveur distant. - Utilisez
rsyncpour copier un dossier entier.
- Créez un fichier