Làm cách nào để thực thi các lệnh FTP trên một dòng?


18

Đây là những gì tôi đang làm khi đăng nhập vào FTP:

ftp user:password@server
ftp: user:password@server: Unknown host
ftp> echo HELLO WORLD!
ftp> quit

Tôi muốn thực hiện lệnh FTP một dòng ...

ftp user:password@server -command "echo HELLO WORLD"

hoặc là

"echo HELLO WORLD" | ftp user:password@server 

Một cái gì đó tương tự ... như là một phần của kịch bản tôi đang cố gắng tạo ra. Không có gì được chuyển, tôi chỉ cần lặp lại một số hướng dẫn và đây là cách dễ nhất tôi đã tìm thấy để làm điều đó giữa hai hệ thống của mình.


1
Đợi đã, FTP không dành cho điều đó! FTP là viết tắt của Giao thức truyền tệp. Bạn cần SSH.
nickguletskii

khi bạn cần lái xe một số móng tay và tất cả những gì bạn có là một cái bàn ủi ... bạn làm với những gì bạn có. Tôi đang thử Telnet, nhưng FTP hoạt động. Kiểm soát giới hạn hệ thống thứ hai và những gì không ... FTP echo hoạt động ngay cả khi đó là "Bàn ủi".
WernerCD

Chà, nó không có tác dụng với tôi ...nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
nickguletskii

1
ftpkhông có echolệnh. lftpnhưng, nó hoàn toàn là địa phương, vì vậy tôi không hiểu tại sao bạn muốn tự mình làm điều đó ....
poolie

@nickguletskii Vâng ... Tôi đã cố gắng để có câu trả lời cho những gì tôi đã làm sai (có lẽ tôi có thể đã rõ ràng hơn). Charles có câu trả lời phù hợp với tôi (ngoài giải pháp cli-php mà tôi có trên SO).
WernerCD

Câu trả lời:


20

Đó thực sự là một công việc dành cho SSH (như những người khác đã chỉ ra), nhưng nếu bạn quyết tâm sử dụng ftp, hãy thử lftp . Nó có sẵn miễn phí cho tất cả các phiên bản Ubuntu hiện được hỗ trợ. Bạn có thể cài đặt nó bằng lệnh sudo apt install lftp

lftp -u username,password -e "your command;quit" ftp.site.com

lftp tài liệu một -ccông tắc chạy lệnh và sau đó thoát, nhưng nó dường như bị phá vỡ trong hầu hết các bản phân phối. -esẽ giữ cho bạn kết nối trừ khi bạn phát hành a quit.


1
Eeeeew ... Mật khẩu văn bản đơn giản ...
nickguletskii

-ckhông hoạt động tốt với tôi trên Ubuntu.
poolie

2
Bạn không cần đặt mật khẩu trên dòng lệnh: một lựa chọn tốt là đặt mật khẩu ~/.netrcvà đảm bảo chế độ đó 0600. FTP có thể thương lượng mật khẩu văn bản không đơn giản trên dây.
poolie

Đó là công việc! Tuyệt vời. Có ... đó không phải là giải pháp "Tốt", nhưng các tùy chọn của tôi bị giới hạn trên máy thứ hai để FTP, trong khi xấu, hoạt động.
WernerCD

19

Tôi đã tìm thấy chủ đề này khi tôi đang tìm kiếm một cách để có một lệnh ftp duy nhất thực hiện chuyển tập tin từ máy này đến máy chủ ftp. Đây là cách thực hiện:

Tạo một tệp có các lệnh ftp trong đó: (gọi nó là 'ftpcommands.txt')

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

Sau đó chạy lệnh ftp và đưa tệp vào đó:

 ftp -n < ftpcommands.txt

Tùy chọn -n ngăn ftp cố gắng đăng nhập tự động khi nhận được lệnh 'mở' của bạn.

Hy vọng THAT giúp được ai đó. Tôi không thể tìm thấy bất cứ điều gì trực tuyến là giải pháp này, vì vậy tôi phải tự mình tìm ra nó.


LƯU Ý: nếu quá trình truyền tệp của bạn không thành công với phản hồi "200", hãy thử thêm lệnh "thụ động" ngay trước khi truyền tệp để vào chế độ thụ động.
Nick Zinger

2

Bạn không thể sử dụng FTP để thực hiện các lệnh từ xa. Nó là viết tắt của Giao thức truyền tệp. Những gì bạn thực sự cần là SSH.

Tất cả những gì bạn cần làm là cài đặt gói sshtrên cả hai máy và sau đó làm theo hướng dẫn này để thiết lập thông tin đăng nhập không cần mật khẩu.

Và bây giờ làm thế nào để gọi nó:

ssh username@host echo "Hello World\!"

Ví dụ, đây là tôi làm điều đó với bản thân mình:

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"
Hello World!

hệ thống thứ hai không có SSH. Tôi thực sự đã có một cái gì đó hoạt động trong PHP thông qua FTP_RAW, nhưng tôi sẽ xem liệu tôi có thể làm việc này vào lúc nào đó không.
WernerCD

1

Bổ sung câu trả lời @charlesbridge, bao gồm trong tệp ~ / .bashrc của bạn như sau:

alias yoursite="lftp -u <username> -e \"<commandA;commandB>\" yoursite.com"

Nguồn tập tin:

source ~/.bashrc

Bây giờ sử dụng bí danh "yoursite" để đăng nhập và thực hiện bao nhiêu lệnh bạn muốn.


0

Cài đặt busybox bằng cách sử dụng:

apt-get install busybox

busybox có thể hoạt động trên cả Linux hoặc hệ thống nhúng, sau đó sử dụng ftpget và ftpput

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
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.