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