Comment exécuter temporairement un serveur FTP?

44

Dans le monde d’Ubuntu, il semble que vous soyez toujours exécutant un serveur FTP ou que vous ne le fassiez jamais . Je suis peut-être le premier analyste du réseau à avoir besoin d’éclairer une image Cisco, Checkpoint ou Nokia en utilisant Ubuntu… J'ai besoin d’un serveur FTP pendant environ 5 minutes, pas plus que ça.

Je recherche un serveur FTP simple et initié par l'utilisateur. Je comprends qu'il devrait probablement fonctionner avec sudo. C'est bien, mais je veux commencer / arrêter comme un programme normal.

Sur la plate-forme Windows, de tels outils sont à la pelle: j'ai utilisé 3CDaemon pendant des années et j'ai récemment trouvé CoreFTP. Les deux sont excellents. Vous configurez un utilisateur, pointez-le sur un répertoire, puis cliquez sur le bouton "Démarrer". Quelques minutes plus tard, vous avez généralement terminé et vous appuyez sur le bouton "Stop". Travail fait.

De tels outils ne semblent pas exister sur Ubuntu. J'ai trouvé un projet Google Code qui crée une instance TFTP assez bien (en supposant qu'il fonctionne toujours - je ne l'ai pas utilisé) dans environ un an et python a évolué), mais qu'en est-il du FTP? Quelque chose là-bas?

    
posée Scaine 12.12.2010 - 16:05
la source

3 réponses

45

pyftpdlib : vous pouvez obtenir un serveur FTP aussi simple que deux: trois:

  1. Installer avec pip pip install --user pyftpdlib
  2. Exécutez avec python -m pyftpdlib , ajoutez -w si vous souhaitez également avoir accès en écriture.
  3. il n'y a pas de troisième étape:)

Vous avez maintenant un serveur ftp sur lequel vous pouvez vous connecter pour partager anonymement votre répertoire personnel. Cela signifie plus comme un test du module, mais il fait ce qu’il dit sur la boîte.

Cette commande:

python -m pyftpdlib --directory=FTP --port=2121 --write

servira, sans privilèges root, sur le port 2121 et accordera un accès en écriture aux utilisateurs anonymes. Il utilisera également le répertoire FTP dans le répertoire de travail actuel au lieu de votre domicile. Tapez python ftpserver.py --help pour obtenir des informations sur toutes les options.

Veuillez noter que ce logiciel est publié sous les termes de la licence MIT , ce qui signifie que vous pouvez Fais fondamentalement ce que tu veux avec ça. Lisez le texte de la licence, ce ne sont que quelques lignes et connaissez vos droits.

Maintenant, ce script ne prend pas en charge le nom d'utilisateur et le mot de passe dans sa fonctionnalité autonome (pour des raisons de sécurité, j'imagine).

J'ai donc ajouté cette fonctionnalité:

  • téléchargez ma version modifiée

Outre les options mentionnées, vous disposez maintenant des paramètres de ligne de commande

--username=USERNAME et --password=PASSWORD :

python ftpserver.py --port=2121 --username=ftpuser --password=3r2u389r2u333j

Encore une fois, utilisez --help pour les voir tous.

Cela devrait être aussi simple que possible.

J'ai aussi écrit un petit guide pour cela:

  • Téléchargez-le ici (mis à jour à la rév. 6)

    Je suis désolé, il ya 3999 lignes, mais ça fera tout ce que fait l'original. Et je voulais tout garder dans un seul fichier. Quand il est démarré sans aucun paramètre (c.-à-d. Le rendre exécutable et double-cliquer dessus, ou créez un lanceur pour cela ), il lance une petite interface graphique pour configurer votre serveur. Vous pouvez toujours l'importer en tant que module python ou utiliser la ligne de commande ci-dessus fu.

    Problèmes connus:

    • Je ne suis pas préoccupé par autre chose que le port 2121. Cela devrait être simple, le fait de rendre le port configurable nécessite une gestion des erreurs complexe que je ne veux pas que l'utilisateur s'embête avec. 2121 devrait toujours fonctionner correctement.

    • Il ne vous avertira pas, comme la ligne de commande, de l’utilisation d’une configuration non sécurisée. C'est à dire. ne pas définir un mot de passe ou quelque chose comme ça.

EDIT: depuis que l’API de pyftpdlib et ftpserver.py a changé (et que les liens UBuntu pastebin ont disparu); la plupart des articles ci-dessus ne fonctionnent plus. Pour la version (2014) de pyftpdlib , utilisez ce script ( ftpserver-cli.py ) pour obtenir les mêmes résultats que ci-dessus:

#!/usr/bin/env python
# ftpserver-cli.py
import sys
sys.path.append("/path/to/pyftpdlib-svn") # enter your proper path here
import argparse

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

def processCmdLineOptions():
  global optparser
  optparser = argparse.ArgumentParser(description="ftpserver-cli",
              formatter_class=argparse.RawDescriptionHelpFormatter)
  optparser.add_argument('-u', '--username', action='store', type=str,
      default="user", help="username")
  optparser.add_argument('-p', '--password', action='store', type=str,
      default="12345", help="password")
  optparser.add_argument('-t', '--port', action='store', type=int,
      default="21", help="port")
  optparser.add_argument('-d', '--directory', action='store', type=str,
      default="/home/stefano/Projekte/", help="port")
  optargs = optparser.parse_args(sys.argv[1:]) #(sys.argv)
  return optargs


optargs = processCmdLineOptions()

print("Using: user: %s pass: %s port: %d dir: %s" % (optargs.username, optargs.password, optargs.port, optargs.directory))

authorizer = DummyAuthorizer()
authorizer.add_user(optargs.username, optargs.password, optargs.directory, perm="elradfmw")
#authorizer.add_anonymous("/home/nobody")

handler = FTPHandler
handler.authorizer = authorizer

server = FTPServer(("127.0.0.1", optargs.port), handler)
server.serve_forever()

appel avec:

$ sudo python ftpserver-cli.py --directory=/tmp/srvtest
Using: user: user pass: 12345 port: 21 dir: /tmp/srvtest
[I 14-03-02 21:40:57] >>> starting FTP server on 127.0.0.1:21, pid=19286 <<<
...
    
réponse donnée Stefano Palazzo 12.12.2010 - 17:13
la source
1
  • Vous pouvez utiliser pure-ftpd

  • Vous pouvez utiliser scp si vous avez un serveur ssh.

réponse donnée karthick87 12.12.2010 - 16:18
la source
0

Pour ceux qui copient des fichiers vers et depuis des routeurs, vous pouvez essayer cet outil: tftpgui

Cela a fonctionné pour moi et est très facile à configurer. C'est aussi un script Python mais tftp au lieu de ftp. Tout ce que vous avez à faire est d'installer python-tk et de télécharger le script

La seule chose à savoir est que Ubunutu utilise par défaut Phython2, donc le meilleur moyen de démarrer le script est:

sudo python3 ./tftpgui.py

Vous pouvez ensuite le configurer dans l'interface graphique. Lorsque vous avez terminé, appuyez sur exit et c'est tout.

Bo

    
réponse donnée BO VESTERGAARD 19.12.2012 - 15:33
la source

Lire d'autres questions sur les étiquettes