Einzeiliger FTP-Server in Python

Rohan Timalsina 21 Juni 2023
Einzeiliger FTP-Server in Python

FTP ist eine Abkürzung für File Transfer Protocol. Es ermöglicht Ihnen, Dateien zwischen Client und Server über ein Computernetzwerk zu übertragen.

Die Python-Bibliothek enthält ein pyftpdlib-Modul, mit dem Sie effiziente und skalierbare FTP-Server mit Python schreiben können. In diesem Tutorial lernen Sie, einen FTP-Server mit einem Einzeiler in Python zu erstellen.

Verwenden Sie pyftpdlib, um einen einzeiligen FTP-Server in Python zu erstellen

Zuerst müssen Sie das Modul pyftpdlib installieren.

pip install pyftpdlib

Ausgang:

Successfully built pyftpdlib
Installing collected packages: pyftpdlib
Successfully installed pyftpdlib-1.5.6

Dann können Sie im Terminal den Befehl pyftpdlib ausführen. Der folgende Befehl startet beispielsweise einen FTP-Server mit dem aktuellen Verzeichnis.

python -m pyftpdlib

Ausgang:

[I 2022-09-20 21:36:36] concurrency model: async
[I 2022-09-20 21:36:36] masquerade (NAT) address: None
[I 2022-09-20 21:36:36] passive ports: None
[I 2022-09-20 21:36:36] >>> starting FTP server on 0.0.0.0:2121, pid=3492 <<<

Überprüfen Sie als Nächstes, ob der Server ausgeführt wird.

curl ftp://127.0.0.1:2121

Es wird den gesamten Inhalt des aktuellen Verzeichnisses wie folgt auflisten.

Ausgang:

-rw-rw-rw-   1 owner    group        6817 May 20 06:55 -1.14-windows.xml
drwxrwxrwx   1 owner    group           0 Nov 13  2021 .Icecream Screen Recorder
drwxrwxrwx   1 owner    group        4096 Mar 28 02:51 .THypervBox
drwxrwxrwx   1 owner    group       12288 Sep 18 14:46 .VirtualBox
drwxrwxrwx   1 owner    group        4096 May 15 07:36 .android

Der Standardmodus ist schreibgeschützt. Sie können den Schreibzugriff mit der Option -w aktivieren. Mit dem Flag -d können Sie ein anderes Verzeichnis zur Freigabe auf dem Server verwenden.

Das folgende Beispiel bedient das Verzeichnis C:\pc\test_folder mit Schreibzugriff für eingeloggte Benutzer.

python -m pyftpdlib -w -d C:\pc\test_folder

Ausgang:

[I 2022-09-22 19:55:47] concurrency model: async
[I 2022-09-22 19:55:47] masquerade (NAT) address: None
[I 2022-09-22 19:55:47] passive ports: None
[I 2022-09-22 19:55:47] >>> starting FTP server on 0.0.0.0:2121, pid=25560 <<<

Um zu prüfen, ob es läuft.

curl ftp://127.0.0.1:2121

Ausgang:

drwxrwxrwx   1 owner    group           0 Feb 23  2022 New folder
-rw-rw-rw-   1 owner    group           0 Feb 23  2022 books.txt
-rw-rw-rw-   1 owner    group          18 Jun 09 15:58 hello.txt

Um die anonyme Anmeldung zu deaktivieren, müssen Sie vor dem Start des Servers den Benutzernamen und das Passwort angeben.

Mit der Option -u können Sie den Benutzernamen festlegen, und die Option -P hilft beim Festlegen eines Passworts für die Anmeldung beim FTP-Server.

python -m pyftpdlib -w -d C:\pc\test_folder -u username -P password

Ausgang:

[I 2022-09-23 00:16:12] concurrency model: async
[I 2022-09-23 00:16:12] masquerade (NAT) address: None
[I 2022-09-23 00:16:12] passive ports: None
[I 2022-09-23 00:16:12] >>> starting FTP server on 0.0.0.0:2121, pid=22732 <<<

Führen Sie diesen Befehl aus, um das freigegebene Verzeichnis aufzulisten.

curl --user username:password ftp://127.0.0.1:2121/

Ausgang:

drwxrwxrwx   1 owner    group           0 Feb 23  2022 New folder
-rw-rw-rw-   1 owner    group           0 Feb 23  2022 books.txt
-rw-rw-rw-   1 owner    group          18 Jun 09 15:58 hello.txt

Führen Sie für weitere Befehlsoptionen den Befehl help aus.

python -m pyftpdlib --help
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Verwandter Artikel - Python Server