lftp: faça login, coloque o arquivo no diretório remoto e saia em um único comando: citação adequada ajuda

lftp: faça login, coloque o arquivo no diretório remoto e saia em um único comando: citação adequada ajuda

Quero usar lftp -cpara fazer uma sessão inteira de uma só vez (já que lançarei isso a partir de um script mais tarde) e consegui, -emas isso me deixa com a sessão interativa que não quero.

Estados manuais

-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.

Mas não entendo como devo citar e encadear meus comandos/interações corretamente.

lftp -e "put -O remote/dir/ /local/file.txt" -u user,pass ftpsite.com funciona excelente. Mas quero sair depois de executar o comando;

lftp -c "open -u user,pass ftpsite.com" || put -O "remote/dir/ /local/file.txt" apenas grita comigo, ou na verdade qualquer combinação de citações que tentei ( ||ou &&independentemente)

Responder1

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

deveria fazer isso.

Se isso não funcionar, tente adicionar /etc/lftp.confas seguintes linhas:

set ftp:ssl-protect-data true
set ftp:ssl-force true
set ftp:ssl-auth TLS
set ssl:verify-certificate no

Responder2

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

Responder3

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

e coloque suas credenciais em ~/.netrc como

machine ftp.yourhost.com login your_username password your_password

Colocar senhas no cli é absolutamente impossível, pois elas são legíveis ao usar ps -aux durante o upload.. além do histórico do bash também.

informação relacionada