¿Cómo copiar un archivo sin usar scp dentro de una sesión ssh?


55

He iniciado sesión en un sistema con ssh y no hay ningún scp presente en ambos sistemas. Cómo copiar un archivo sin usar el programa scp.


¿Netcat (nc) está presente en ambos sistemas? Si es así, use su sesión ssh para hacer un túnel en un puerto TCP y use nc en ese puerto.

¿Tiene usted rsync?
slhck 01 de

3
También puede hacer esto:ssh user@remotehost cat /path/to/remote/file > /path/to/local/file
n. 'pronombres' m.

@nm citas requeridas (para mí, servidor ubuntu)
Ivan Black

@nm no funciona para mí: el archivo está dañado (supongo que el mensaje de inicio de sesión lo rompe).
monnef

Respuestas:


94

Para enviar un archivo:

cat file | ssh ajw@dogmatix "cat > remote"

O:

ssh ajw@dogmatix "cat > remote" < file

Para recibir un archivo:

ssh ajw@dogmatix "cat remote" > copy

20
@ggg eso no es cierto en absoluto. cd /tmp; cat /bin/bash > test; chmod a+x test; diff test /bin/bash; ./testTodo funciona bien. No hay nada inherentemente "mágico" en los archivos binarios. Ambos archivos en mi ejemplo son idénticos y tienen la misma suma de verificación. Es cierto que copiar y pegar desde una ventana de terminal no funcionará debido a cosas como secuencias de control y caracteres no imprimibles, pero el uso de tuberías como estas nunca se acercan a una terminal.
Flexo

@Flexo Necesito algo como esto, la única excepción es que necesito canalizar todos los archivos jpg desde una carpeta. ¿Cómo podría iterar a través de / storage / sdcard1 / * jpg y >a los archivos con el mismo nombre?
George Profenza

2
@GeorgeProfenza necesitarás agregar tara la mezcla. tar cvf - /path/*.jpg | ssh foo@bar.com "tar xvf -"o algo similar debería funcionar.
Flexo

Una implicación de lo que dicen ggg y Flexo es que no se puede usar la opción "-t" para ssh.
mjg123

1
¡Agradable! También puede usar pv en lugar del primer gato para obtener una pv file | ssh ajw@dogmatix "cat > remote"
barra de

3

Prueba esto:

cat myfile.txt | ssh me@otherhost 'cat - > myfile.txt' 

2
no hay necesidad de tantas llamadas de gatos
Flexo

1

Puede usar xxdy algunas citas feas para copiar varios archivos, así como ejecutar comandos en ellos y ejecutarlos:

ssh -t foo@bar.com "
echo $'"$(cat somefile | xxd -ps)"' | xxd -ps -r > "'somefile'"
chmod +x somefile
echo $'"$(cat someotherfile | xxd -ps)"' | xxd -ps -r > "'someotherfile'"
chmod +x someotherfile
./somefile
./someotherfile
"

ah, mi respuesta es claramente demasiado l33t
Aric

-1

Además de canalizar el archivo a un control remoto cat, también puede usar algún cliente SFTP para transferir los archivos.


+1 pero debe tenerse en cuenta que el OP está intentando evitar scp porque no existe en los sistemas. Dada esta restricción, también es probable que un servidor FTP deba existir en el extremo receptor, lo que hace que el proceso de copia dependa de un software que no sea el que normalmente está allí por defecto.
Paul Sasik

-1

python3 -m http.serveren el mismo directorio con el archivo deseado - después de que pueda curlo wgeto descargar un archivo con su navegador. Tenga en cuenta que con ese comando en ejecución todos sus archivos del directorio actual estarán disponibles públicamente, hasta que presione Ctrl+ C.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.