Transferencia de archivos mediante el servidor HTTP integrado de Python

La necesidad de transferir archivos a través de una red surge con frecuencia. Los sistemas GNU/Linux admiten varios protocolos y herramientas para hacerlo, algunos de los cuales están diseñados para compartir archivos de forma algo permanente (como SMB, AFP y NFS), mientras que otros, como Secure Copy (SCP), se utilizan para el uso manual rápido 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 se pueden iniciar instantáneamente con un solo comando.

Instalación de Python

Lo más probable es 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:

sudo apt update
sudo apt install -y python3

Inicio del servidor HTTP

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

Dirección IP de transferencia Python Http

Averigüe qué versión de Python está instalada con los siguientes comandos:

python --version
python3 --version

En la misma máquina, cambie su directorio de trabajo al 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 en Internet si la máquina de envío tiene una dirección IP pública), mientras se ejecuta el servidor Python HTTP.

Por ejemplo:

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

python -m 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.

python -m SimpleHTTPServer [port]
python3 -m http.server [port]

Nota: Se requieren privilegios de root si elige un puerto por debajo de 1024.

Descargando 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 vaya a http://DIRECCIÓN_IP:8000, donde “DIRECCIÓN_IP” es la dirección IP de la computadora que envía, y haga clic en los archivos deseados para descargarlos.

Navegador de transferencia Python Http

Alternativamente, puede usar Wget o cURL para obtener sus archivos. Ya debería tener uno o ambos instalados. Si ninguno 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 http://IP_ADDRESS:8000/filename

Wget de transferencia Http de Python

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

wget -r http://IP_ADDRESS:8000/

Python Http Transferencia Wget Recursivo

Usando cURL

De forma predeterminada, curl intenta imprimir el contenido del archivo en su terminal. Entonces, para guardar el archivo, especifique un nombre de archivo con el -o bandera.

curl http://IP_ADDRESS:8000/filename -o filename

Rizo de transferencia 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 encriptación ni autenticación, debe tener cuidado de no exponer archivos confidenciales.

Publicaciones Similares

Deja una respuesta

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