Я хочу использовать его lftp -c
для выполнения всей сессии за один раз (так как позже я запущу это из скрипта), и мне это удалось, -e
но, конечно, это оставляет меня с интерактивной сессией, которая мне не нужна.
Состояние ручного управления
-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.
Но я не понимаю, как мне правильно цитировать и связывать свои команды/взаимодействия.
lftp -e "put -O remote/dir/ /local/file.txt" -u user,pass ftpsite.com
работает отлично. Но я хочу выйти после выполнения команды;
lftp -c "open -u user,pass ftpsite.com" || put -O "remote/dir/ /local/file.txt"
просто кричит на меня, или на самом деле любая комбинация цитат, которые я пробовал ( ||
или &&
независимо)
решение1
$ lftp -c "open -u user,pass ftpsite.com; put -O remote/dir/ /local/file.txt"
следует это сделать.
Если это не сработает, попробуйте добавить /etc/lftp.conf
следующие строки:
set ftp:ssl-protect-data true
set ftp:ssl-force true
set ftp:ssl-auth TLS
set ssl:verify-certificate no
решение2
lftp -e "put -O remote/dir/ /local/file.txt; bye" -u user,pass ftpsite.com
решение3
lftp -e "put -O remote/dir/ /local/file.txt; bye" ftp.yourhost.com
и поместите ваши учетные данные в ~/.netrc, например
machine ftp.yourhost.com login your_username password your_password
Ввод паролей в cli абсолютно бесполезен, так как их можно прочитать даже при использовании ps -aux во время загрузки, а также в истории bash.