Làm cách nào để tải lên tệp từ dòng lệnh bằng FTP hoặc SSH?


30

Tôi chưa bao giờ làm điều này trước đây và tôi đang tạo một kịch bản bash shell để làm điều này cho tôi. Tôi cũng sẽ kết nối qua ssh để làm một số việc (mà tôi đã biết cách thực hiện). Vì vậy, có lẽ có một cách để tải lên các tập tin thông qua ssh để tôi có thể làm tất cả trong một kết nối?

Tôi có thể làm cái này như thế nào?

#!/bin/sh

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

Điều đó không trả lời câu hỏi này, nhưng có lẽ điều này có thể giúp một số người: curl.io cho phép bạn tải tệp qua bash lên một lưu trữ http công khai (có hiệu lực trong vài giờ tôi nghĩ)
Vincent Fenet

Câu trả lời:


56

Bạn có thể sử dụng scpđể sao chép vào một máy từ xa.

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

mật khẩu có thể được thông qua với điều này là tốt? Ngoài ra, điều này có khởi tạo một phiên ssh không? Tôi có thể chạy các lệnh khác không?
Andrew

2
Không, bạn không thể vượt qua mật khẩu. Nhưng bạn có thể thiết lập xác thực khóa ssh. Điều đó có nghĩa là bạn không xác thực qua mật khẩu mà thông qua khóa được lưu trong tệp và tự động được truyền khi kết nối. Và không một lần nữa, bạn không thể thực hiện các lệnh khác với điều này.
Felix

ý tôi là bạn có thể kết nối với ssh, sau đó chạy scp không? Hay chúng là các lệnh riêng biệt?
Andrew

2
sshscplà các lệnh khác nhau. Để biết phần giới thiệu, hãy xem ssh.com/support/documentation/online/ssh/adminguide/32/NH
tangens

1
@Felix nên chỉ ra rằng nếu bạn không thiết lập xác thực khóa ssh, bạn sẽ được nhắc nhập mật khẩu . Điều đó có nghĩa là, việc thiết lập đó không phải là một yêu cầu quan trọng để sử dụng lệnh này
aexl

6

Có lẽ bạn đang tìm kiếm SCP hoặc tương tự.

#!/bin/bash

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

tất nhiên điều này phải được điều chỉnh theo ý thích của bạn. Đặt người dùng @ host với thông tin thực của bạn. Bạn sẽ được nhắc nhập mật khẩu để tải lên.


4

Nếu bạn thực sự phải sử dụng ssh (thay vì scp), bạn có thể làm:

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

nhưng scp thường xuyên (như gợi ý tangens ) là tốt nhất.


Im sử dụng một kết nối FTP, bạn có thể xin vui lòng cho làm thế nào để chuyển hoặc sao chép tập tin từ địa phương để từ xa, im sử dụng filezilla hoặc WinSCP ... tôi cần phải giải nén zip hoặc sao chép từ địa phương để từ xa
Sushivam

1

scp là câu trả lời tốt hơn vì nó sẽ được mã hóa qua SSH.

Tuy nhiên, nếu bạn muốn làm điều đó trên ftp tiêu chuẩn, hãy xem ncftpput. Nó được thiết kế cụ thể để tải lên một tệp:

NAME ncftpput - Chương trình truyền tệp Internet cho tập lệnh

SYNOPSIS ncftpput [tùy chọn] máy chủ từ xa máy chủ thư mục từ xa ...



0

Khi bạn sử dụng lệnh scp(bản sao bảo mật), nó sẽ kết nối với máy khách và nếu bạn chưa lưu dấu vân tay cho thiết bị chủ thì nó sẽ hỏi bạn mật khẩu máy chủ nếu không nó sẽ tự động kết nối với máy chủ mà tôi tin.


0

Ví dụ ec2, bạn cũng phải truyền .pemtệp,

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.