Bagaimana cara menjalankan perintah FTP pada satu baris?

18

Inilah yang saya lakukan ketika saya masuk ke FTP:

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

Saya ingin melakukan perintah FTP satu baris ...

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

atau

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

Sesuatu yang mirip ... sebagai bagian dari skrip yang saya coba buat. Tidak ada yang ditransfer, saya hanya perlu mengulangi beberapa instruksi dan ini adalah cara termudah yang saya temukan untuk melakukannya di antara dua sistem saya.

WernerCD
sumber
1
Tunggu, FTP bukan untuk itu! FTP adalah singkatan dari File Transfer Protocol. Anda membutuhkan SSH.
nickguletskii
ketika Anda perlu menggerakkan beberapa paku dan yang Anda miliki hanyalah papan setrika ... Anda puas dengan apa yang Anda miliki. Saya mencoba Telnet, tetapi FTP berfungsi. Kontrol terbatas sistem kedua dan apa yang tidak ... Gema FTP berfungsi bahkan jika itu adalah "papan setrika".
WernerCD
Yah, itu tidak berhasil untuk saya ...nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
nickguletskii
1
ftptidak memiliki echoperintah. lftptidak, tapi ini murni lokal, jadi saya tidak melihat mengapa Anda ingin melakukan itu sendiri ....
poolie
@nickguletskii Ya ... Saya mencoba untuk mendapatkan jawaban atas kesalahan saya (mungkin saya bisa lebih jelas). Charles punya jawaban yang cocok untuk saya (selain solusi cli-php yang saya dapatkan di SO).
WernerCD

Jawaban:

20

Itu benar-benar lebih merupakan pekerjaan untuk SSH (seperti yang ditunjukkan orang lain), tetapi jika Anda bertekad untuk menggunakan ftp, coba lftp . Ini tersedia secara bebas untuk semua versi Ubuntu yang saat ini didukung. Anda dapat menginstalnya dengan perintah sudo apt install lftp

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

lftp mendokumentasikan -csaklar yang menjalankan perintah dan kemudian berhenti, tetapi tampaknya rusak di sebagian besar distribusi. -eakan membuat Anda tetap terhubung kecuali Anda mengeluarkan a quit.

jembatan Charles
sumber
1
Eeeeew ... Kata sandi teks biasa ...
nickguletskii
-ctidak berfungsi dengan baik untuk saya di Ubuntu.
poolie
2
Anda tidak perlu memasukkan kata sandi pada baris perintah: satu opsi yang baik adalah memasukkannya ~/.netrcdan memastikan bahwa itu mode 0600. FTP dapat menegosiasikan kata sandi non-teks biasa pada kabel.
poolie
Itu bekerja! Luar biasa. Ya ... ini bukan solusi "Bagus", tetapi opsi saya terbatas pada mesin kedua sehingga FTP, walaupun jelek, berfungsi.
WernerCD
19

Saya menemukan utas ini ketika saya sedang mencari cara untuk memiliki perintah ftp tunggal melakukan transfer file dari mesin ini ke server ftp. Begini caranya:

Buat file dengan perintah ftp di dalamnya: (sebut saja 'ftpcommands.txt')

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

Kemudian jalankan perintah ftp dan berikan file ke dalamnya:

 ftp -n < ftpcommands.txt

Opsi -n mencegah ftp dari mencoba masuk secara otomatis ketika ia menerima Anda perintah 'terbuka'.

Semoga itu membantu seseorang. Saya tidak dapat menemukan apa pun secara online yang merupakan solusi ini, jadi saya harus mencari tahu sendiri.

Mendongkrak
sumber
CATATAN: jika transfer file Anda gagal dengan respons "200", coba tambahkan perintah "pasif" tepat sebelum transfer file untuk masuk ke mode pasif.
Nick Zinger
2

Anda tidak dapat menggunakan FTP untuk menjalankan perintah dari jarak jauh. Itu adalah singkatan dari File Transfer Protocol. Apa yang sebenarnya Anda butuhkan adalah SSH.

Yang perlu Anda lakukan adalah menginstal paket sshpada kedua mesin dan kemudian ikuti panduan ini untuk mengatur login tanpa kata sandi.

Dan sekarang bagaimana menyebutnya:

ssh username@host echo "Hello World\!"

Misalnya, ini yang saya lakukan untuk diri saya sendiri:

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"
Hello World!
nickguletskii
sumber
sistem kedua tidak memiliki SSH. Saya benar-benar mendapatkan sesuatu yang berfungsi dalam PHP melalui FTP_RAW, tetapi saya akan melihat apakah saya tidak dapat menjalankannya di beberapa titik.
WernerCD
1

Melengkapi jawaban @charlesbridge, sertakan dalam file ~ / .bashrc Anda sebagai berikut:

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

Sumber file:

source ~/.bashrc

Sekarang gunakan alias "situs Anda" untuk masuk dan menjalankan perintah sebanyak yang Anda inginkan.

Alan
sumber
0

Instal busybox menggunakan:

apt-get install busybox

busybox dapat bekerja di Linux atau sistem embeded keduanya, kemudian gunakan ftpget dan ftpput

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
pengguna2328368
sumber