lftp: ログイン、リモート ディレクトリへのファイルの配置、終了を 1 つのコマンドで実行: 適切な引用符のヘルプ

lftp: ログイン、リモート ディレクトリへのファイルの配置、終了を 1 つのコマンドで実行: 適切な引用符のヘルプ

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

関連情報