回答:
通常、コマンドラインにパスワードを含めることは、ps / topを実行できる他のユーザーに表示され、シェルの履歴に保存される可能性があるため、セキュリティリスクと見なされます。
可能であれば、キーベースの認証を設定することをお勧めします。
また、sftpで可能になるとは思わない。安全な転送に使用することを意図しています。本当にこのようなことをしなければならず、他に選択肢がない場合は、おそらくexpectを使用した自動化を検討する必要があります。
他の人が述べたように、コマンドラインのパスワードは最後の手段でなければなりません。
ただし、他に何もできない場合。sshパスに行くことができます
sshpass -p <password> sftp user@host
brew search sshpass
です。
あなたがやろうとしていることをスクリプト化するには、perl、ruby、またはpythonを使用してください。ルビーの場合、それはただです(net-sftp APIドキュメントから取得):
require 'net/sftp'
Net::SFTP.start('host', 'username', :password => 'password') do |sftp|
# upload a file or directory to the remote host
sftp.upload!("/path/to/local", "/path/to/remote")
end
他の答えが述べているように、公開鍵認証を使用します。少し古くなっていますが、それについて知りたいすべてのことを説明するすばらしいIBM developerWorksシリーズと、キーチェーンなどの便利な補助ツールがあります。
パスワードがコマンドラインコマンドで表示されることを気にしないサーチャーの場合:
sftp userid:password@remoteHost
sftp
connectコマンドにパスワードを含める方法です。
更新:これは間違っていることが判明しました...コメントを参照してください