Transfering Files
Transferencia de Archivos Usando wget
y cURL
wget
y cURL
Existen múltiples métodos para transferir archivos entre tu máquina local y un servidor remoto. Uno de los métodos más comunes implica ejecutar un servidor HTTP en Python en tu máquina local y luego utilizar herramientas como wget
o cURL
para descargar el archivo desde el host remoto. A continuación, se detalla cómo realizar este proceso.
Paso 1: Configurar un Servidor HTTP en Python
Primero, navega al directorio que contiene el archivo que deseas transferir y ejecuta un servidor HTTP utilizando Python:
Esto iniciará un servidor HTTP que escucha en todas las interfaces de red (0.0.0.0
) en el puerto 8000
.
Paso 2: Descargar el Archivo en el Host Remoto Usando wget
Una vez que el servidor HTTP está en funcionamiento en tu máquina local, puedes descargar el archivo en el host remoto utilizando wget
:
Notas Importantes:
IP y Puerto: Asegúrate de reemplazar
10.10.14.1
con la dirección IP de tu máquina local y verificar que el puerto8000
esté abierto y no bloqueado por un firewall.Archivo: En este ejemplo, el archivo que se transfiere es
linenum.sh
.
Paso 3: Descargar el Archivo Usando cURL
(Si wget
No Está Disponible)
Si el host remoto no tiene wget
instalado, puedes utilizar cURL
para realizar la descarga:
Explicación de la Comando:
curl
: Herramienta de línea de comandos para transferir datos con sintaxis de URL.http://10.10.14.1:8000/linenum.sh
: URL desde donde se descarga el archivo.-o linenum.sh
: Especifica el nombre del archivo de salida.
Transferencia de Archivos con SCP
SCP
Otra opción para transferir archivos es utilizar scp
, siempre que tengamos credenciales de acceso SSH en el host remoto. El proceso se realiza de la siguiente manera:
Transferir el archivo con scp
Si ya hemos obtenido las credenciales SSH del usuario en el host remoto, podemos transferir archivos usando el siguiente comando:
Al ejecutar este comando, se solicitará la contraseña del usuario en el host remoto:
El archivo linenum.sh
se transferirá al directorio /tmp/
del host remoto.
Nota: Especificamos el nombre del archivo local después del comando
scp
, seguido de la ubicación en el host remoto donde se guardará, después de:
.
Transferencia de Archivos con Base64
En algunos casos, no podremos transferir archivos directamente, como cuando el host remoto tiene protecciones de firewall que impiden descargar archivos desde nuestra máquina. En situaciones como esta, podemos utilizar un truco simple: codificar el archivo en formato Base64, luego copiar la cadena codificada al servidor remoto y decodificarla allí. Aquí te muestro cómo hacerlo.
Codificar el archivo en Base64
Supongamos que queremos transferir un archivo binario llamado
shell
. Primero, lo codificamos en Base64 con el siguiente comando:Esto generará una cadena Base64 larga similar a esta:
Decodificar el archivo en el host remoto
Ahora, copiamos la cadena Base64 generada y la pegamos en el host remoto. Luego, utilizamos el siguiente comando para decodificarla y guardar el archivo:
Este comando decodificará la cadena Base64 y generará el archivo
shell
en el host remoto.
Validando la Transferencia de Archivos
Para asegurarnos de que un archivo se haya transferido correctamente, podemos utilizar el comando file
para verificar su formato:
Este comando nos devolverá información sobre el tipo de archivo. Por ejemplo:
Como podemos ver, al ejecutar el comando file
sobre el archivo shell
, se indica que es un binario ELF, lo que significa que la transferencia fue exitosa.
Verificación con MD5
Para asegurarnos de que el archivo no se corrompió durante el proceso de codificación y decodificación, podemos comparar su hash MD5. Primero, calculamos el hash MD5 en nuestra máquina local:
Esto generará una salida similar a esta:
Luego, en el servidor remoto, ejecutamos el mismo comando sobre el archivo transferido:
Deberíamos obtener el mismo hash MD5:
Si ambos hashes coinciden, significa que el archivo se transfirió correctamente sin alteraciones.
Last updated