Bir satırda FTP komutlarını nasıl yürütebilirim?


18

Bir FTP'ye giriş yaptığımda bunu yapıyorum:

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

Tek satırlık bir FTP komutu yapmak istiyorum ...

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

veya

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

Benzer bir şey ... oluşturmaya çalıştığım bir komut dosyasının parçası olarak. Hiçbir şey aktarılmıyor, sadece bazı talimatları tekrarlamam gerekiyor ve bu iki sistemim arasında yapmanın en kolay yoludur.


1
Bekle, FTP bunun için değil! FTP, Dosya Aktarım Protokolü anlamına gelir. SSH'ye ihtiyacınız var.
nickguletskii

Bazı tırnakları sürmeniz gerektiğinde ve sahip olduğunuz tek şey bir ütü masasıdır ... sahip olduklarınızla yaparsınız. Telnet'i deniyorum ama FTP çalışıyor. İkinci sistemin sınırlı kontrolü ve ne olmadığı ... FTP yankısı "Ütü masası" olsa bile çalışır.
WernerCD

Eh, benim için çalışmadı ...nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
nickguletskii

1
ftpbir echokomutu yok. lftp, ama tamamen yerel, bu yüzden bunu neden tek başına yapmak istediğinizi anlamıyorum ....
poolie

@nickguletskii Evet ... Yanlış yaptığım şeylere bir cevap almaya çalışıyordum (belki daha açık olabilirdim). Charles benim için çalışan bir cevaba sahip (SO'da aldığım bir cli-php çözümüne ek olarak).
WernerCD

Yanıtlar:


20

Bu gerçekten SSH için daha fazla bir iş (diğerlerinin de işaret ettiği gibi), ancak ftp kullanmaya kararlıysanız, lftp'yi deneyin . Şu anda desteklenen tüm Ubuntu sürümleri için ücretsiz olarak kullanılabilir. Komut ile kurabilirsiniz sudo apt install lftp

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

lftp -c, komutu çalıştıran ve sonra çıkılan bir anahtarı belgeler , ancak çoğu dağıtımda bozuk görünür. -eyayınlamadığınız sürece sizi bağlı tutacaktır quit.


1
Eeeeew ... Düz metin şifreleri ...
nickguletskii

-cUbuntu'da benim için iyi çalışıyor.
poolie

2
Parolayı komut satırına koymanıza gerek yoktur: iyi bir seçenek onu ~/.netrcgirip modun olduğundan emin olmaktır 0600. FTP, tel üzerinde düz metin olmayan parolalar üzerinde anlaşabilir.
poolie

Bu çalışır! Muhteşem. Evet ... bu "İyi" bir çözüm değil, ancak seçeneklerim ikinci makinede sınırlı, bu yüzden FTP çirkin olsa da çalışıyor.
WernerCD

19

Tek bir ftp komutu bu makineden ftp sunucusuna bir dosya aktarımı yürütmek için bir yol ararken bu iş parçacığı bulundu. İşte böyle:

İçinde ftp komutları bulunan bir dosya oluşturun: ('ftpcommands.txt' olarak adlandırın)

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

Sonra ftp komutunu çalıştırın ve dosyayı içine verin:

 ftp -n < ftpcommands.txt

-N seçeneği, ftp'nin 'open' komutunu aldığında otomatik olarak oturum açmaya çalışmasını engeller.

Umarım birine yardım eder. Çevrimiçi olarak bu çözüm olan hiçbir şey bulamadım, bu yüzden bunu kendim çözmeliydim.


NOT: dosya aktarımınız "200" yanıtıyla başarısız olursa, pasif moda girmek için dosya aktarımından hemen önce "pasif" komutunu eklemeyi deneyin.
Nick Zinger

2

Komutları uzaktan yürütmek için FTP kullanamazsınız. Dosya Aktarım Protokolü anlamına gelir. Aslında ihtiyacınız olan SSH.

Tek yapmanız gereken paketi sshher iki makineye de yüklemek ve ardından şifresiz girişler ayarlamak bu kılavuzu etmektir.

Ve şimdi nasıl adlandırılır:

ssh username@host echo "Hello World\!"

Örneğin, bunu kendime yapıyorum:

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

ikinci sistemde SSH yoktur. Aslında FTP_RAW üzerinden PHP çalışan bir şey var, ama ben bir noktada bu çalışma alamadım göreceksiniz.
WernerCD

1

@Charlesbridge yanıtını tamamlayan ~ / .bashrc dosyanıza aşağıdakileri ekleyin:

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

Dosyayı kaynakla:

source ~/.bashrc

Şimdi oturum açmak ve istediğiniz sayıda komutu çalıştırmak için "siteniz" takma adını kullanın.


0

Meşgul kutusunu aşağıdakileri kullanarak yükleyin:

apt-get install busybox

busybox hem Linux hem de gömülü sistem üzerinde çalışabilir, ardından ftpget ve ftpput kullanabilir

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.