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
