Transferencia de archivos mediante el servidor HTTP integrado de Python

La necesidad de transferir archivos a través de una red es algo que surge con frecuencia. Los sistemas GNU / Linux admiten múltiples protocolos y herramientas para hacerlo, algunos de los cuales están diseñados para compartir archivos de forma permanente (como SMB, AFP y NFS), mientras que otros, como Secure Copy (SCP), se utilizan para archivos manuales rápidos y con secuencias de comandos. transferencias de archivos. Entre ellos se encuentra el Protocolo de transferencia de hipertexto (HTTP), el protocolo versátil y ubicuo en el que se basa la World Wide Web.

Python, que se incluye de forma predeterminada en la mayoría de las distribuciones de Linux, proporciona servidores HTTP simples a través de los módulos “SimpleHTTPServer” y “http.server”. El primero se encuentra en la biblioteca estándar de Python 2, mientras que el segundo se incluye en Python 3. Estos servidores HTTP livianos no requieren una instalación separada y pueden iniciarse instantáneamente con un solo comando.

Instalación de Python

Es muy probable que su sistema incluya al menos una versión de Python, pero si ese no es el caso, instale Python 3 usando su administrador de paquetes nativo.

Por ejemplo, en Debian y Ubuntu:

Iniciar el servidor HTTP

Tome nota de la dirección IP utilizada por la máquina de envío.

Dirección IP de transferencia Http de Python

Descubra qué versión de Python está instalada con los siguientes comandos:

En la misma máquina, cambie su directorio de trabajo por el que contiene los archivos que está transfiriendo. Tenga en cuenta el hecho de que todo el contenido de su directorio de trabajo actual puede ser accesible para cualquier persona en su red (o Internet si la máquina emisora ​​tiene una dirección IP pública), mientras el servidor HTTP de Python se está ejecutando.

Por ejemplo:

Ahora puede iniciar el servidor HTTP. Para Python 2.x, use el módulo SimpleHTTPServer:

O http.server en el caso de Python 3.x:

Ambas variaciones escuchan en el puerto 8000 de forma predeterminada, aunque puede especificar explícitamente un número de puerto diferente después del nombre del módulo.

Nota: Se requieren privilegios de root si elige un puerto menor que 1024.

Descarga de sus archivos

En la máquina receptora, puede usar cualquier cliente HTTP para descargar sus archivos. Si está utilizando un entorno gráfico, un navegador suele ser más conveniente que las utilidades de línea de comandos. Simplemente busque http: // DIRECCIÓN_IP: 8000, donde “IP_ADDRESS” es la dirección IP de la computadora remitente, y haga clic en los archivos deseados para descargarlos.

Navegador de transferencia Python Http

Alternativamente, puede usar Wget o cURL para recuperar sus archivos. Ya debería tener uno o ambos instalados. Si ninguno de los dos lo es, sugerimos instalar Wget, ya que es más fácil de usar y admite la descarga de directorios completos.

Para Debian y Ubuntu:

Para RHEL y CentOS 6/7:

Para Fedora y RHEL / CentOS 8:

Usando Wget

Para descargar un solo archivo con Wget, simplemente invoque Wget seguido de la URL del archivo que desea descargar.

Wget de transferencia Http de Python

También puede usar Wget para descargar de forma recursiva todo el directorio agregando el -r bandera de línea de comandos.

Python Http Transfer Wget recursivo

Usando cURL

Por defecto, curl intenta imprimir el contenido del archivo en su terminal. Entonces, para guardar el archivo en su lugar, especifique un nombre de archivo con el -o bandera.

Curl de transferencia de Python Http

Conclusión

La funcionalidad HTTP en la biblioteca estándar de Python proporciona una forma básica pero rápida y conveniente de transferir archivos, perfecta para algunos escenarios. Pero tenga en cuenta que debido a que se trata de HTTP simple sin cifrado ni autenticación, debe tener cuidado de no exponer archivos confidenciales.

¿Es útil este artículo?

¡Ayúdanos a correr la voz!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *