Come eseguo i comandi FTP su una riga?


18

Questo è quello che sto facendo quando accedo a un FTP:

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

Vorrei fare un comando FTP a una riga ...

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

o

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

Qualcosa di simile ... come parte di una sceneggiatura che sto cercando di creare. Non viene trasferito nulla, devo solo fare eco ad alcune istruzioni e questo è il modo più semplice che ho trovato per farlo tra due dei miei sistemi.


1
Aspetta, FTP non è per quello! FTP sta per File Transfer Protocol. Hai bisogno di SSH.
nickguletskii,

quando hai bisogno di guidare un po 'di unghie e tutto quello che hai è un asse da stiro ... ti accontenti di quello che hai. Sto provando Telnet, ma FTP funziona. Controllo limitato del secondo sistema e cosa no ... FTP echo funziona anche se si tratta di un "asse da stiro".
WernerCD,

Beh, non ha funzionato per me ...nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
nickguletskii

1
ftpnon ha un echocomando. lftpsì, ma è puramente locale, quindi non vedo perché dovresti farlo da solo ....
Poolie,

@nickguletskii Sì ... stavo cercando di ottenere una risposta a ciò che stavo facendo di sbagliato (forse avrei potuto essere più chiaro). Charles ha la risposta che funziona per me (oltre a una soluzione cli-php che ho ottenuto su SO).
WernerCD,

Risposte:


20

Questo è davvero più un lavoro per SSH (come altri hanno sottolineato), ma se sei determinato a usare ftp, prova lftp . È disponibile gratuitamente per tutte le versioni attualmente supportate di Ubuntu. Puoi installarlo con il comando sudo apt install lftp

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

lftp documenta un'opzione -cche esegue il comando e quindi si chiude, ma sembra essere rotto nella maggior parte delle distribuzioni. -eti terrà connesso a meno che non emetti un quit.


1
Eeeeew ... Password in testo semplice ...
nickguletskii

-cfunziona bene per me su Ubuntu.
poolie,

2
Non è necessario inserire la password nella riga di comando: una buona opzione è inserirla ~/.netrce assicurarsi che sia la modalità 0600. FTP può negoziare password non in chiaro sul filo.
poolie,

Che funzioni! Eccezionale. Sì ... non è una soluzione "buona", ma le mie opzioni sono limitate sulla seconda macchina, quindi FTP, anche se brutto, funziona.
WernerCD,

19

Ho trovato questo thread mentre stavo cercando un modo per avere un singolo comando ftp per eseguire un trasferimento di file da questa macchina al server ftp. Ecco come:

Crea un file con i comandi ftp al suo interno: (chiamalo 'ftpcommands.txt')

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

Quindi eseguire il comando ftp e inserire il file al suo interno:

 ftp -n < ftpcommands.txt

L'opzione -n ​​impedisce a ftp di provare ad accedere automaticamente quando riceve il comando 'open'.

Spero che aiuti qualcuno. Non ho trovato nulla online che fosse questa soluzione, quindi ho dovuto capirlo da solo.


NOTA: se il trasferimento del file non riesce con una risposta "200", provare ad aggiungere il comando "passivo" subito prima del trasferimento del file per accedere alla modalità passiva.
Nick Zinger,

2

Non è possibile utilizzare FTP per eseguire comandi da remoto. È l'acronimo di File Transfer Protocol. Ciò di cui hai effettivamente bisogno è SSH.

Tutto quello che devi fare è installare il pacchetto sshsu entrambe le macchine e quindi seguire questa guida per configurare gli accessi senza password.

E ora come chiamarlo:

ssh username@host echo "Hello World\!"

Ad esempio, sono io che lo faccio da solo:

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

il secondo sistema non ha SSH. In realtà ho qualcosa che funziona in PHP tramite FTP_RAW, ma vedrò se non riesco a farlo funzionare ad un certo punto.
WernerCD,

1

A completamento della risposta di @charlesbridge, includi nel tuo file ~ / .bashrc quanto segue:

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

Origine del file:

source ~/.bashrc

Ora usa l'alias "yoursite" per accedere ed eseguire tutti i comandi che desideri.


0

Installa busybox usando:

apt-get install busybox

busybox può funzionare su Linux o su entrambi i sistemi incorporati, quindi utilizzare ftpget e ftpput

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.