¿Cómo cargar un archivo desde la línea de comandos con FTP o SSH?


30

Nunca he hecho esto antes y estoy creando un script de shell bash para hacer esto por mí. También me conectaré a través de ssh para hacer algunas cosas (que ya sé cómo hacer). Entonces, ¿tal vez hay una manera de cargar archivos a través de ssh para que pueda hacerlo todo en una conexión?

¿Cómo puedo hacer esto?

#!/bin/sh

cd ./files-to-upload
#upload the files

Eso no responde a esta pregunta, pero tal vez esto podría ayudar a algunas personas: curl.io le permite cargar un archivo a través de bash a un alojamiento público http (creo que es válido durante unas horas)
Vincent Fenet

Respuestas:


56

Puede usar scppara copiar en una máquina remota.

scp <file to upload> <username>@<hostname>:<destination path>

¿se puede pasar la contraseña con esto también? Además, ¿esto inicializa una sesión ssh? ¿Puedo ejecutar otros comandos también?
Andrew

2
No, no puedes pasar la contraseña. Pero puede configurar la autenticación de clave ssh. Eso significa que no se autentica mediante una contraseña, sino mediante una clave que se almacena en un archivo y se transmite automáticamente en la conexión. Y no otra vez, no puedes ejecutar otros comandos con esto.
Felix

Quiero decir, ¿puedes conectarte con ssh y luego ejecutar scp? ¿O son comandos separados?
Andrew

2
sshy scpson diferentes comandos. Para una introducción, visite ssh.com/support/documentation/online/ssh/adminguide/32/…
tangens

1
@Felix debería haber señalado que si no tiene configurada la autenticación de clave ssh, se le pedirá una contraseña . Eso significa que tener esa configuración no es un requisito crítico para usar este comando
aexl

6

Probablemente estés buscando SCP o similar.

#!/bin/bash

cd ./files-to-upload
scp * user@host:/path/to/upload/files/to

por supuesto, esto debe ajustarse a su gusto. Reemplace user @ host con su información real. Se le pedirá una contraseña para cargar.


4

Si realmente debe usar ssh (en lugar de scp) puede hacer:

for filename in *; do
  cat $filename | ssh user@host "cd /path/to/upload/files/to; cat - > $filename"
done

pero SCP regular (como sugerencia de tangenos ) es el mejor.


Estoy usando una conexión FTp, ¿podría decirme cómo transferir o copiar archivos de local a remoto, estoy usando filezilla o winscp ... necesito extraer un zip o una copia de local a remoto
Sushivam

1

scp es la mejor respuesta, ya que se encriptaría a través de SSH.

Sin embargo, si desea hacerlo sobre ftp estándar, mire ncftpput. Está diseñado específicamente para cargar un archivo:

NAME ncftpput: programa de transferencia de archivos de Internet para scripts

SINOPSIS ncftpput [opciones] remote-host remote-directory local-files ...



0

Cuando usa el scpcomando (copia segura) se conecta al cliente y si aún no tiene una huella digital guardada para el dispositivo host, le pedirá la contraseña del host, de lo contrario, debería conectarse automáticamente al host, creo.


0

Para la instancia ec2, también debe pasar el .pemarchivo,

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
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.