¿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
Andrés
fuente
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>
tangenos
fuente
¿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.

John T
fuente
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.

Jimmy Hedman
fuente
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 ...

DuPie
fuente
0

curl es un buen programa que maneja varios protocolos.

Joe Internet
fuente
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.

David
fuente
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/
Elavarasan
fuente