Dans le monde d’Ubuntu, il semble que vous exécutiez toujours toujours un serveur FTP ou jamais faire. Je suis peut-être le premier analyste réseau à avoir besoin de flasher une image Cisco, Checkpoint ou Nokia avec Ubuntu ... J'ai besoin d'un serveur FTP pendant peut-être 5 minutes, rien de plus.
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 le démarrer/l'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 récemment découvert 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 "Arrêter". Travail accompli.
De tels outils ne semblent pas exister sur Ubuntu. J'ai trouvé un projet de code Google qui crée assez bien une instance TFTP (en supposant qu'elle fonctionne toujours - je ne l'ai pas utilisée depuis environ un an et python est passé), mais que diriez-vous de FTP? Quelque chose là-bas?
Vous pouvez obtenir un serveur FTP aussi simple qu'un deux trois en utilisant pyftpdlib :
pip install --user pyftpdlib
python -m pyftpdlib
, ajoutez -w
si vous souhaitez également un accès en écriture.Vous avez maintenant un serveur FTP auquel vous pouvez vous connecter pour partager anonymement votre répertoire personnel. Ceci est plus destiné à tester le module, mais il fait ce qu’il dit sur l’étain.
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 à la place de votre répertoire personnel. Tapez python ftpserver.py --help
pour obtenir des informations sur toutes les options.
anonymous@localhost:2121/
Veuillez noter que ce logiciel est publié sous les termes de MIT License , ce qui signifie que vous pouvez faire ce que vous voulez, avec ce que vous voulez. Lisez le texte de la licence, ce n’est que quelques lignes et connaissez vos droits.
Désormais, ce script ne prend pas en charge les nom d'utilisateur et mot de passe dans le cadre de sa fonctionnalité autonome (pour des raisons de sécurité, j'imagine).
J'ai donc ajouté cette fonctionnalité:
Vous avez maintenant, en plus de toutes les options que j'ai mentionnées, les paramètres de ligne de commande
--username=USERNAME
and --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 gui pour cela:
Téléchargez-le ici (mis à jour à la rév. 6)
Je suis désolé, il a 3999 lignes, mais il fera tout ce que l’original fait. Et je voulais tout garder dans un seul fichier. Lorsqu'il est démarré sans aucun paramètre (c'est-à-dire, exécutez-le et double-cliquez dessus, ou créez un programme de lancement pour ce dernier ), il lance un petit gui pour vous permettre de 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 me suis pas soucié de rien d'autre que du port 2121. Cela devrait être simple, rendre le port configurable nécessite une gestion d'erreur complexe que je ne veux pas que l'utilisateur se soucie de rien. 2121 devrait toujours fonctionner correctement.
Comme la ligne de commande, il ne vous avertira pas 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: puisque l'API de pyftpdlib
et ftpserver.py
a changé (et que les liens ubuntu Pastebin ont disparu); la plupart des postes ci-dessus ne fonctionnent plus. Pour la version (2014) de pyftpdlib
name__, utilisez ce script (ftpserver-cli.py
) pour obtenir le même résultat 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()
appeler 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 <<<
...
Vous pouvez utiliser pure-ftpd
Vous pouvez utiliser scp si vous avez un serveur ssh.
Pour ceux qui copient des fichiers depuis et vers 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 télécharger le script
La seule chose à prendre en compte est que Ubunutu utilise par défaut Phython2. La meilleure façon de démarrer le script est la suivante:
Sudo python3 ./tftpgui.py
Vous pouvez ensuite le configurer dans l'interface graphique. Lorsque vous avez terminé, vous appuyez sur exit et c'est tout.
Bo