Como fazer upload de um arquivo da linha de comando com FTP ou SSH?

30

Eu nunca fiz isso antes e estou criando um script de shell bash para fazer isso por mim. Eu também estarei conectando via ssh para fazer algumas coisas (o que eu já sei fazer). Talvez haja uma maneira de fazer upload de arquivos via ssh para que eu possa fazer tudo em uma conexão?

Como posso fazer isso?

#!/bin/sh

cd ./files-to-upload
#upload the files
Andrew
fonte
Isso não responder a esta pergunta, mas talvez isso poderia ajudar algumas pessoas: curl.io permite que você envie um arquivo através bash para uma http pública hospedagem (válido para algumas horas eu acho)
Vincent Fenet

Respostas:

56

Você pode usar scppara copiar para uma máquina remota.

scp <file to upload> <username>@<hostname>:<destination path>
tangens
fonte
a senha pode ser passada com isso também? Além disso, isso inicializa uma sessão ssh? Posso executar outros comandos também?
Andrew
2
Não, você não pode passar a senha. Mas você pode configurar a autenticação de chave ssh. Isso significa que você não se autentica através de uma senha, mas de uma chave que é armazenada em um arquivo e transmitida automaticamente na conexão. E não, novamente, você não pode executar outros comandos com isso.
Felix
Quero dizer, você pode se conectar com o ssh e executar o scp? Ou são comandos separados?
Andrew
2
sshe scpsão comandos diferentes. Para obter uma introdução, consulte ssh.com/support/documentation/online/ssh/adminguide/32/…
tangens
1
O @Felix deveria ter destacado que, se você não tiver a autenticação por chave ssh configurada, será solicitada uma senha . Isso significa que ter essa configuração não é um requisito crítico para usar este comando
aexl 29/03
6

Você provavelmente está procurando por SCP ou similar.

#!/bin/bash

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

é claro que isso deve ser ajustado ao seu gosto. Substitua user @ host por suas informações reais. Você será solicitado a fornecer uma senha.

John T
fonte
4

Se você realmente deve usar ssh (em vez de scp), você pode:

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

mas scp regular (como sugestão de tangens ) é o melhor.

Jimmy Hedman
fonte
Im usando uma conexão FTP, você poderia por favor dizer como transferir ou copiar arquivos de local para remoto, im usando filezilla ou winscp ... eu preciso para extrair um zip ou copiar de local para remoto
Sushivam
1

scp é a melhor resposta, pois seria criptografada em SSH.

No entanto, se você quiser fazê-lo através do ftp padrão, consulte ncftpput. Ele foi projetado especificamente para fazer upload de um arquivo:

NAME ncftpput - programa de transferência de arquivos da Internet para scripts

SINOPSE ncftpput [opções] arquivos locais do diretório remoto do host remoto ...

DuPie
fonte
0

curl é um bom programa que lida com vários protocolos.

Joe Internet
fonte
0

Quando você usa o scpcomando (cópia segura), ele se conecta ao cliente e, se você ainda não possui uma impressão digital salva no dispositivo host, solicita a senha do host, caso contrário, ele deve se conectar automaticamente ao host que eu acredito.

David
fonte
0

Para a instância ec2, você também deve passar o .pemarquivo,

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
Elavarasan
fonte