セッション全体を一度に実行するために使用したいのですが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 の履歴も同様です。