Bagaimana cara mengunggah file dari baris perintah dengan FTP atau SSH?

30

Saya belum pernah melakukan ini sebelumnya dan saya membuat skrip bash shell untuk melakukan ini untuk saya. Saya juga akan terhubung melalui ssh untuk melakukan beberapa hal (yang saya sudah tahu caranya). Jadi mungkin ada cara untuk mengunggah file melalui ssh sehingga saya bisa melakukan semuanya dalam satu koneksi?

Bagaimana saya bisa melakukan ini?

#!/bin/sh

cd ./files-to-upload
#upload the files
Andrew
sumber
Itu tidak menjawab pertanyaan ini, tapi mungkin ini bisa membantu beberapa orang: curl.io memungkinkan Anda untuk mengunggah file melalui bash ke hosting http publik (kurasa beberapa jam kurasa)
Vincent Fenet

Jawaban:

56

Anda dapat menggunakannya scpuntuk menyalin ke mesin jarak jauh.

scp <file to upload> <username>@<hostname>:<destination path>
tangens
sumber
dapatkah kata sandi diteruskan dengan ini juga? Juga, apakah ini menginisialisasi sesi ssh? Bisakah saya menjalankan perintah lain juga?
Andrew
2
Tidak, Anda tidak dapat memasukkan kata sandi. Tetapi Anda dapat mengatur otentikasi kunci ssh. Itu berarti Anda tidak mengotentikasi melalui kata sandi tetapi melalui kunci yang disimpan dalam file dan secara otomatis dikirimkan pada koneksi. Dan tidak lagi, Anda tidak dapat menjalankan perintah lain dengan ini.
Felix
maksud saya dapat Anda terhubung dengan ssh, kemudian jalankan scp? Atau apakah itu perintah yang terpisah?
Andrew
2
sshdan scpberbagai perintah. Untuk pengantar, lihat ssh.com/support/documentation/online/ssh/adminguide/32/…
tangens
1
@Felix seharusnya menunjukkan bahwa jika Anda tidak mengatur otentikasi kunci ssh, Anda akan diminta untuk memasukkan kata sandi . Itu berarti, memiliki pengaturan itu bukan persyaratan penting untuk menggunakan perintah ini
aexl
6

Anda mungkin mencari SCP atau yang serupa.

#!/bin/bash

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

tentu saja ini harus disesuaikan dengan keinginan Anda. Ganti user @ host dengan informasi Anda yang sebenarnya. Anda akan dimintai kata sandi untuk diunggah.

John T
sumber
4

Jika Anda benar-benar harus menggunakan ssh (bukan scp) yang dapat Anda lakukan:

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

tapi scp reguler (seperti saran tangens ) adalah yang terbaik.

Jimmy Hedman
sumber
Saya menggunakan koneksi FTp, dapatkah Anda memberi tahu cara mentransfer atau menyalin file dari lokal ke remote, saya menggunakan filezilla atau winscp ... saya perlu mengekstrak zip atau menyalin dari lokal ke remote
Sushivam
1

scp adalah jawaban yang lebih baik karena akan dienkripsi melalui SSH.

Namun, jika Anda ingin melakukannya di atas ftp standar, lihat ncftpput. Ini dirancang khusus untuk mengunggah file:

NAME ncftpput - Program transfer file Internet untuk skrip

SYNOPSIS ncftpput [opsi] remote-host remote-direktori-file lokal ...

DuPie
sumber
0

curl adalah program bagus yang menangani beberapa protokol.

Joe Internet
sumber
0

Ketika Anda menggunakan perintah scp(copy aman) yang terhubung ke klien dan jika Anda belum memiliki sidik jari yang tersimpan untuk perangkat host, ia akan meminta kata sandi host Anda jika tidak maka akan terhubung secara otomatis ke host yang saya percaya.

David
sumber
0

Misalnya EC2, Anda harus melewati .pemfile juga,

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