Ein Zeilen-FTP-Server in Python
Ist es möglich, einen einzeiligen Befehl in python mit einem einfachen ftp-server? Ich möchte dies tun zu können, als schnelle und temporäre Art und Weise zur übertragung von Dateien auf einer linux-box, ohne Installation eines ftp-Servers. Vorzugsweise eine Art und Weise mit gebaut in python-Bibliotheken, so gibt es nichts extra zu installieren.
InformationsquelleAutor der Frage zio | 2011-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obligatorisch Verdreht Beispiel:
Und wahrscheinlich nützlich:
InformationsquelleAutor der Antwort Ali Afshar
Check-out pyftpdlib von Giampaolo Rodola. Es ist eines der besten ftp-Server die es gibt für python. Es ist in Googles chromium (browser) und Basar (version control system). Es ist die vollständige Implementierung in Python für RFC-959 (aka: FTP-server-Implementierung spec).
Aus der Kommandozeile:
Alternativ 'my_server.py':
Es gibt noch mehr Beispiele auf der website, wenn Sie wollen, etwas komplizierter.
Erhalten Sie eine Liste der Kommandozeilen-Optionen:
Beachten Sie, wenn Sie wollen, zu überschreiben oder verwenden Sie ein standard-ftp-port, benötigen Sie admin-rechten (z.B. sudo).
InformationsquelleAutor der Antwort Brian Bruggeman
Warum gehst du nicht stattdessen eine one-line - HTTP server?
wird, dient der Inhalt des aktuellen Arbeitsverzeichnis über HTTP auf port 8000.
Wenn Sie die Verwendung von Python 3 ist, sollten Sie stattdessen schreiben
Sehen die SimpleHTTPServer Modul docs für 2.x und die http.server docs für 3.x.
Durch die Art und Weise, in beiden Fällen wird der port-parameter ist optional.
InformationsquelleAutor der Antwort Andrea Spadaccini
Den Antworten wurden alle angenommen, Ihre Python-distribution haben einige third-party-Bibliotheken, um zu erreichen das "one-liner python-ftpd" Ziel, aber das ist nicht der Fall, was @zio war gefragt. Auch, SimpleHTTPServer beinhaltet web-Browser für das herunterladen von Dateien, es geht nicht schnell genug.
Python kann das nicht tun ftpd von selbst, aber Sie können netcat
nc
:nc
ist im Grunde eine eingebaute tool von jedem UNIX-ähnliche Betriebssysteme (auch embedded systems), so ist es ideal für "schnelle und temporäre Weg, um Dateien zu übertragen".Schritt 1, auf der Empfänger-Seite, ausführen:
nc -l 12345 | tar -xf -
dieser lauscht auf port 12345, auf Daten wartet.
Schritt 2, auf Seite des Senders:
tar -cf - ALL_FILES_YOU_WANT_TO_SEND ... | nc $RECEIVER_IP 12345
Können Sie auch
pv
in der Mitte, um den Fortschritt der übertragung:tar -cf - ALL_FILES_YOU_WANT_TO_SEND ...| pv | nc $RECEIVER_IP 12345
Nachdem die übertragung abgeschlossen ist, beide Seiten
nc
wird automatisch verlassen, und den job zu erledigen.InformationsquelleAutor der Antwort Meow
Für pyftpdlib Benutzer. Ich fand dieses auf der pyftpdlib website. Dies schafft anonyme ftp-write Zugriff auf Ihr Dateisystem, so verwenden Sie bitte mit der gebotenen Sorgfalt. Weitere features sind unter der Haube für eine bessere Sicherheit, also einfach mal suchen:
Könnte hilfreich sein für diejenigen, die versucht, mit der deprecated Methode oben.
sudo python -m pyftpdlib.ftpserver
InformationsquelleAutor der Antwort cdplayer
Installieren:
Dann den code:
Tiefer:
http://twistedmatrix.com/documents/current/core/examples/
InformationsquelleAutor der Antwort Jonathan
Ich weiß nicht, über eine Online-FTP-server, aber wenn Sie das tun
Es ausgeführt werden einem HTTP-server auf 0.0.0.0:8000, die Dateien aus dem aktuellen Verzeichnis. Wenn Sie auf der Suche nach einem Weg, um schnell Dateien von einem linux-Rechner mit einem web-browser, die Sie cant beat it.
InformationsquelleAutor der Antwort Alex
Gute Liste an tools,
http://www.willdonnelly.net/blog/file-transfer/
Ich verwendet habe, wuff, mich auf einer Reihe von Gelegenheiten. Sehr schön.
InformationsquelleAutor der Antwort Joe Drumgoole
Die einfachere Lösung sein wird, um Benutzer pyftpd Bibliothek. Diese Bibliothek ermöglicht es Ihnen, zu Spinnen, Python FTP-server in einer Zeile. Es ist nicht standardmäßig installiert, aber wir können ihn installieren, mit einfachen apt-Befehl
nun aus dem Verzeichnis, das Sie wollen, zu dienen, führen Sie einfach die pythod Modul
InformationsquelleAutor der Antwort MVnD3X