Est-il possible d'avoir une commande d'une ligne en python pour faire un simple serveur ftp? J'aimerais pouvoir le faire comme moyen rapide et temporaire de transférer des fichiers vers une machine Linux sans avoir à installer un serveur ftp. De préférence, un moyen d'utiliser des bibliothèques python intégrées, donc il n'y a rien de plus à installer.
python
ftp
ftp-server
zio
la source
la source
-o Ciphers=arcfour
, c'estsshfs $REMOTEHOST:$DIRECTORY $MOUNTPOINT -o Ciphers=arcfour
-à- dire copiez, déplacez, renommez, gérez vos fichiers dans votre système de fichiers. sshfs est également disponible pour Mac OSX.Réponses:
Exemple Twisted obligatoire :
Et probablement utile:
la source
Découvrez pyftpdlib de Giampaolo Rodola. C'est l'un des meilleurs serveurs ftp pour python. Il est utilisé dans le chrome de Google (leur navigateur) et le bazar (un système de contrôle de version). C'est l'implémentation la plus complète sur Python pour RFC-959 (aka: spécification d'implémentation du serveur FTP).
Depuis la ligne de commande:
Alternativement 'my_server.py':
Il y a plus d'exemples sur le site Web si vous voulez quelque chose de plus compliqué.
Pour obtenir une liste d'options de ligne de commande:
Notez que si vous souhaitez remplacer ou utiliser un port ftp standard, vous aurez besoin de privilèges d'administrateur (par exemple sudo).
la source
>>> from pyftpdlib import ftpserver
:pyftpdlib\ftpserver.py:54: DeprecationWarning: pyftpdlib.ftpserver module is deprecated
Pourquoi n'utilisez-vous pas à la place un serveur HTTP à une ligne ?
servira le contenu du répertoire de travail actuel via HTTP sur le port 8000.
Si vous utilisez Python 3, vous devriez plutôt écrire
Consultez la documentation du module SimpleHTTPServer pour 2.x et la documentation http.server pour 3.x.
À propos, dans les deux cas, le paramètre de port est facultatif.
la source
Les réponses ci-dessus supposaient toutes que votre distribution Python aurait des bibliothèques tierces afin d'atteindre l'objectif "one liner python ftpd", mais ce n'est pas le cas de ce que @zio demandait. De plus, SimpleHTTPServer implique un navigateur Web pour le téléchargement de fichiers, ce n'est pas assez rapide.
Python ne peut pas faire ftpd par lui - même, mais vous pouvez utiliser netcat ,
nc
:nc
est fondamentalement un outil intégré à partir de tous les systèmes de type UNIX (même les systèmes embarqués), il est donc parfait pour " un moyen rapide et temporaire de transférer des fichiers ".Étape 1, côté récepteur, exécutez:
cela écoutera sur le port 12345, en attendant les données.
Étape 2, côté expéditeur:
Vous pouvez également mettre
pv
au milieu pour suivre la progression du transfert:Une fois le transfert terminé, les deux côtés de
nc
s'arrêteront automatiquement et le travail sera terminé.la source
tar
etnc
disponibles. Et si c'était Windows?Pour les utilisateurs de pyftpdlib. J'ai trouvé ceci sur le site Web de pyftpdlib. Cela crée un ftp anonyme avec un accès en écriture à votre système de fichiers, veuillez donc l'utiliser avec précaution. Plus de fonctionnalités sont disponibles sous le capot pour une meilleure sécurité, alors allez voir:
Cela pourrait être utile pour ceux qui ont essayé d'utiliser la méthode obsolète ci-dessus.
sudo python -m pyftpdlib.ftpserver
la source
sudo
si vous installez dans un venvpip3 install pyftpdlib
etpython3 -m pyftpdlib -w
. A fonctionné à merveille pour moi.Installer:
Puis le code:
Approfondissez:
http://twistedmatrix.com/documents/current/core/examples/
la source
La solution la plus simple sera d'utiliser la bibliothèque pyftpd. Cette bibliothèque vous permet de faire tourner le serveur FTP Python en une seule ligne. Il n'est pas installé par défaut, mais nous pouvons l'installer en utilisant une simple commande apt
maintenant à partir du répertoire que vous souhaitez servir, exécutez simplement le module pythod
la source
Je ne connais pas un serveur FTP à une ligne, mais si vous le faites
Il exécutera un serveur HTTP sur 0.0.0.0:8000, servant des fichiers hors du répertoire actuel. Si vous cherchez un moyen d'extraire rapidement des fichiers d'une boîte Linux avec un navigateur Web, vous ne pouvez pas le battre.
la source
la source