Python での 1 行の FTP サーバー

Rohan Timalsina 2023年6月21日
Python での 1 行の FTP サーバー

FTP は File Transfer Protocol の略です。 これにより、コンピューター ネットワークを介してクライアントとサーバー間でファイルを転送できます。

Python ライブラリには pyftpdlib モジュールが含まれており、効率的でスケーラブルな FTP サーバーを Python で作成できます。 このチュートリアルでは、Python でワンライナーを使用して FTP サーバーを作成する方法を説明します。

pyftpdlib を使用して Python で 1 行の FTP サーバーを作成する

まず、pyftpdlib モジュールをインストールする必要があります。

pip install pyftpdlib

出力:

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

その後、ターミナルで pyftpdlib コマンドを実行できます。 たとえば、次のコマンドは、現在のディレクトリで FTP サーバーを起動します。

python -m pyftpdlib

出力:

[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 <<<

次に、サーバーが稼働しているかどうかを確認します。

curl ftp://127.0.0.1:2121

次のように、現在のディレクトリのすべてのコンテンツが一覧表示されます。

出力:

-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

デフォルトのモードは読み取り専用です。 -w オプションを使用して、書き込みアクセスを有効にできます。 -d フラグを使用すると、別のディレクトリを使用してサーバーで共有できます。

次の例では、ディレクトリ C:\pc\test_folder にログイン ユーザーの書き込みアクセス権を提供します。

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

出力:

[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 <<<

実行されているかどうかを確認します。

curl ftp://127.0.0.1:2121

出力:

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

匿名ログインを無効にするには、サーバーを起動する前に usernamepassword を指定する必要があります。

-u オプションを使用すると、username を設定できます。-P オプションを使用すると、FTP サーバーにログインするための password を設定できます。

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

出力:

[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 <<<

このコマンドを実行して、共有ディレクトリを一覧表示します。

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

出力:

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

その他のコマンド オプションについては、help コマンドを実行してください。

python -m pyftpdlib --help
著者: Rohan Timalsina
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

関連記事 - Python Server