Transférer des fichiers à l'aide du serveur HTTP intégré de Python
Le besoin de transférer des fichiers sur un réseau est fréquent. Les systèmes GNU/Linux prennent en charge plusieurs protocoles et outils pour ce faire, dont certains sont conçus pour un partage de fichiers quelque peu permanent (tels que SMB, AFP et NFS), tandis que d'autres, tels que Secure Copy (SCP), sont utilisés pour un partage rapide de fichiers manuels et scriptés. transferts de fichiers. Parmi ceux-ci se trouve le protocole HTTP (HyperText Transfer Protocol), le protocole polyvalent et omniprésent sur lequel s'appuie le World Wide Web.
Python, qui est inclus par défaut dans la plupart des distributions Linux, fournit des serveurs HTTP simples via les modules "SimpleHTTPServer" et "http.server". Le premier se trouve dans la bibliothèque standard Python 2, tandis que le second est inclus dans Python 3. Ces serveurs HTTP légers ne nécessitent aucune installation séparée et peuvent être démarrés instantanément avec une seule commande.
Lire aussi : 10 One-Liners Python utiles que vous devez connaître
Installation de Python
Votre système inclut très probablement au moins une version de Python, mais si ce n'est pas le cas, installez Python 3 à l'aide de votre gestionnaire de packages natif.
Par exemple, sur Debian et Ubuntu :
sudo apt update
sudo apt install -y python3
Lire aussi : Comment utiliser Python pour les tâches d'administration système et de mise en réseau de base de Linux
Démarrage du serveur HTTP
Notez l'adresse IP utilisée par la machine émettrice.
ip a sDécouvrez quelle version de Python est installée avec les commandes suivantes :
python --version
python3 --versionSur la même machine, remplacez votre répertoire de travail par celui contenant les fichiers que vous transférez. Soyez conscient du fait que l'intégralité du contenu de votre répertoire de travail actuel peut être accessible à toute personne sur votre réseau (ou sur Internet si la machine émettrice possède une adresse IP publique), pendant que le serveur HTTP Python est en cours d'exécution.
cd /path/to/files/Par exemple:
cd /home/user/Documents/Vous pouvez maintenant démarrer le serveur HTTP. Pour Python 2.x, utilisez le module SimpleHTTPServer :
python -m SimpleHTTPServerOu http.server dans le cas de Python 3.x :
python3 -m http.serverLes deux variantes écoutent sur le port 8000 par défaut, bien que vous puissiez spécifier explicitement un numéro de port différent après le nom du module.
python -m SimpleHTTPServer [port]
python3 -m http.server [port]Remarque : les privilèges root sont requis si vous choisissez un port inférieur à 1024.
Lire aussi : 8 erreurs HTTP courantes et comment les corriger
Téléchargement de vos fichiers
Sur la machine réceptrice, vous pouvez utiliser n'importe quel client HTTP pour télécharger vos fichiers. Si vous utilisez un environnement graphique, un navigateur est souvent plus pratique que les utilitaires de ligne de commande. Accédez simplement à http://IP_ADDRESS:8000, où "IP_ADDRESS" est l'adresse IP de l'ordinateur expéditeur, et cliquez sur les fichiers souhaités pour les télécharger.
Alternativement, vous pouvez utiliser Wget ou cURL pour récupérer vos fichiers. Vous devriez déjà en avoir un ou les deux installés. Si ce n’est pas le cas, nous vous suggérons d’installer Wget, car il est plus convivial et prend en charge le téléchargement de répertoires entiers.
Pour Debian et Ubuntu :
sudo apt install wgetPour RHEL et CentOS 6/7 :
sudo yum install wgetPour Fedora et RHEL/CentOS 8 :
sudo dnf install wgetUtiliser Wget
Pour télécharger un seul fichier avec Wget, invoquez simplement Wget suivi de l'URL du fichier que vous souhaitez télécharger.
wget http://IP_ADDRESS:8000/filenameVous pouvez également utiliser Wget pour télécharger de manière récursive l'intégralité du répertoire en ajoutant l'indicateur de ligne de commande -r.
wget -r http://IP_ADDRESS:8000/
Utiliser cURL
Par défaut, curl essaie d'imprimer le contenu du fichier sur votre terminal. Donc, pour enregistrer le fichier à la place, spécifiez un nom de fichier avec l'indicateur -o.
curl http://IP_ADDRESS:8000/filename -o filenameConclusion
La fonctionnalité HTTP de la bibliothèque standard de Python fournit un moyen simple mais rapide et pratique de transférer des fichiers, parfait pour certains scénarios. Mais gardez à l’esprit que, comme il s’agit d’un simple HTTP sans cryptage ni authentification, vous devez faire attention à ne pas exposer les fichiers sensibles.




