Servidor FTP de una línea en Python

Rohan Timalsina 21 junio 2023
Servidor FTP de una línea en Python

FTP es una abreviatura de Protocolo de transferencia de archivos. Le permite transferir archivos entre el cliente y el servidor a través de una red informática.

La biblioteca de Python incluye un módulo pyftpdlib, que le permite escribir servidores FTP eficientes y escalables con Python. Este tutorial le enseña a crear un servidor FTP usando una sola línea en Python.

Use pyftpdlib para crear un servidor FTP de una línea en Python

Primero, debe instalar el módulo pyftpdlib.

pip install pyftpdlib

Producción :

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

Luego puede ejecutar el comando pyftpdlib en la terminal. Por ejemplo, el siguiente comando inicia un servidor FTP con el directorio actual.

python -m pyftpdlib

Producción :

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

A continuación, verifique si el servidor se está ejecutando.

curl ftp://127.0.0.1:2121

Enumerará todo el contenido del directorio actual de la siguiente manera.

Producción :

-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

El modo predeterminado es de solo lectura. Puede habilitar el acceso de escritura usando la opción -w. La bandera -d le permite usar un directorio diferente para compartir en el servidor.

El siguiente ejemplo sirve el directorio C:\pc\test_folder con acceso de escritura para usuarios registrados.

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

Producción :

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

Para comprobar si se está ejecutando.

curl ftp://127.0.0.1:2121

Producción :

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

Para deshabilitar el inicio de sesión anónimo, debe especificar el nombre de usuario y la contraseña antes de iniciar el servidor.

La opción -u le permite configurar el nombre de usuario, y la opción -P ayuda a configurar una contraseña para iniciar sesión en el servidor FTP.

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

Producción :

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

Ejecute este comando para listar el directorio compartido.

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

Producción :

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

Para obtener más opciones de comando, ejecute el comando de ayuda.

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

Artículo relacionado - Python Server