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.
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 https://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.
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 https://IP_ADDRESS:8000/filename
También puede usar Wget para descargar recursivamente todo el directorio agregando el -r
indicador de línea de comandos.
wget -r https://IP_ADDRESS:8000/
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 https://IP_ADDRESS:8000/filename -o filename
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.