Mit pyftpdlib können Sie einen FTP-Server so einfach wie einen Zwei-Drei-Server einrichten :
- Mit Pip installieren
pip install --user pyftpdlib
- Ausführen mit
python -m pyftpdlib
, Hinzufügen, -w
wenn Sie auch Schreibzugriff wünschen.
- es gibt keinen Schritt drei :)
Sie haben jetzt einen FTP-Server, auf dem Sie sich anmelden können, um anonym Ihr Home-Verzeichnis freizugeben. Dies ist eher als Test des Moduls gedacht, aber es macht das, was es verspricht.
Dieser Befehl:
python -m pyftpdlib --directory=FTP --port=2121 --write
wird ohne Root-Rechte auf Port 2121 bereitgestellt und anonymen Benutzern Schreibzugriff gewährt. Es wird auch das Verzeichnis FTP
im aktuellen Arbeitsverzeichnis anstelle Ihres Heimverzeichnisses verwendet. Geben Sie ein python ftpserver.py --help
, um Informationen zu allen Optionen zu erhalten.
- Loggen Sie sich ein bei
anonymous@localhost:2121/
Bitte beachten Sie, dass diese Software unter den Bedingungen der MIT-Lizenz veröffentlicht wird. Dies bedeutet, dass Sie grundsätzlich alles tun können, was Sie möchten. Lesen Sie den Lizenztext, es sind nur ein paar Zeilen, und kennen Sie Ihre Rechte.
Dieses Skript unterstützt Benutzernamen und Passwort nicht als Teil seiner eigenständigen Funktionalität (aus Sicherheitsgründen, wie ich es mir vorstelle).
Also habe ich diese Funktion hinzugefügt:
Sie haben jetzt zusätzlich zu allen Optionen, die ich erwähnt habe, die Befehlszeilenparameter
--username=USERNAME
und --password=PASSWORD
:
python ftpserver.py --port=2121 --username=ftpuser --password=3r2u389r2u333j
Wieder verwenden --help
, um sie alle zu sehen.
Dies sollte so einfach wie möglich sein.
Ich habe auch ein kleines GUI dafür geschrieben:
Laden Sie es hier herunter (aktualisiert bei Rev. 6)
Es tut mir leid, dass es 3999 Zeilen lang ist, aber es wird alles tun, was das Original tut. Und ich wollte alles in einer Datei behalten. Wenn es ohne Parameter gestartet wird (dh es ausführbar machen und darauf doppelklicken oder einen Starter dafür erstellen ), wird eine kleine Benutzeroberfläche zum Konfigurieren des Servers gestartet . Sie können es weiterhin als Python-Modul importieren oder die obige Befehlszeile fu verwenden.
Bekannte Probleme:
Ich habe mich mit nichts anderem als Port 2121 beschäftigt. Dies sollte einfach sein. Um den Port konfigurierbar zu machen, ist eine komplexe Fehlerbehandlung erforderlich, mit der sich der Benutzer nicht befassen soll. 2121 sollte immer gut funktionieren.
Sie werden nicht wie in der Befehlszeile vor der Verwendung einer unsicheren Konfiguration gewarnt. Dh kein Passwort setzen oder so.
BEARBEITEN: seit die API von pyftpdlib
und ftpserver.py
geändert wurde (und die Ubuntu-Pastebin-Links weg sind); Die meisten der oben genannten Beiträge funktionieren nicht mehr. pyftpdlib
Verwenden Sie für die (2014) -Version von dieses Skript ( ftpserver-cli.py
), um dasselbe wie oben zu erreichen:
#!/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()
anrufen mit:
$ 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 <<<
...