lftp: connectez-vous, placez le fichier dans le répertoire distant et quittez en une seule commande: aide appropriée pour la citation

17

Je veux utiliser lftp -cpour faire une session entière en une seule fois (car je lancerai cela à partir d'un script plus tard) et j'ai réussi avec -emais cela me laisse avec la session interactive que je ne veux pas.

États manuels

-c commands
          Execute the given commands and exit. Commands can be separated with a semicolon,  `&&'
          or  `||'.  Remember to quote the commands argument properly in the shell.  This option
          must be used alone without other arguments.

Mais je ne comprends pas comment je devrais citer et enchaîner correctement mes commandes / interactions.

lftp -e "put -O remote/dir/ /local/file.txt" -u user,pass ftpsite.com fonctionne très bien. Mais je veux quitter après avoir exécuté la commande;

lftp -c "open -u user,pass ftpsite.com" || put -O "remote/dir/ /local/file.txt" me crie juste dessus, ou en fait n'importe quelle combinaison de citations que j'ai essayées ( ||ou &&peu importe)

Recct
la source
il suffit d'ajouter; quitter ou; bye :)
meso_2600

Réponses:

28
$ lftp -c "open -u user,pass ftpsite.com; put -O remote/dir/ /local/file.txt" 

devrait le faire.

Si cela ne fonctionne pas, essayez d'ajouter à vos /etc/lftp.conflignes suivantes:

set ftp:ssl-protect-data true
set ftp:ssl-force true
set ftp:ssl-auth TLS
set ssl:verify-certificate no
glenn jackman
la source
2
existe-t-il de toute façon que cela fonctionne si le mot de passe contient des caractères comme' " : ;
Pete
Je me suis fait trébucher, car j'avais un espace après cette première virgule, une fois que j'ai compris que cela fonctionnait très bien
Patrick
10

lftp -e "put -O remote/dir/ /local/file.txt; bye" -u user,pass ftpsite.com

Mohnish
la source
1

lftp -e "put -O remote/dir/ /local/file.txt; bye" ftp.yourhost.com

et mettez vos informations d'identification sous ~ / .netrc comme

machine ftp.yourhost.com login your_username password your_password

Mettre des mots de passe dans le cli est absolument impossible car ils sont même lisibles lorsque vous utilisez ps -aux pendant le téléchargement .. à côté de l'historique bash également.

Eugen Mayer
la source