次の行を含むスクリプトを使用します。
sftp [email protected]:/dir/file.txt
スクリプトを実行すると、パスワードを要求されます。
[email protected]'s password:
ただし、パスワードの入力を求められません。スクリプトでパスワード入力を自動化してファイルをダウンロードしたい
みんな、やりたくない。スクリプト内でそのプロンプトをキャッチしてパスワードを入力したいだけです。出来ますか?
sshpassはbashに属していますか?
これはまったく機能していません
SFTPは基本的にサーバー側のSSH + SFTPであるため、必要なのは、秘密鍵や公開鍵などの非対話型認証の一種です。使用しているOSに応じて、ssh-keygen
を使用してキーを生成し、ssh-copy-id
コマンドを使用して公開キーをサーバーにコピーできます。
最も簡単な方法:
sshpass -p 'password123' scp -- [email protected]:/dir/file.txt /local/dir
sshpass
は機能している必要があり、sftp
の場合も...書き込みパスワードを使用したスクリプトの権限を確認することを忘れないでください。
PD:コマンドでsshpassをインストールする必要があります(debianベースのディストリビューションの場合):
apt-get install sshpass
このプロセスを自動化する別の方法は、expectスクリプトを使用することです。次に例を示します。
例えば:
#!/usr/bin/expect -f
spawn sftp [email protected]:/dir/file.txt
expect "[email protected]'s password :"
send "mypassword123\r"
send "exit\r"
here からの期待に関する詳細情報を取得するか、Googleで検索することができます
そもそもパスワードを必要としないように、鍵ベースの認証を使用する必要があります。
これを行う方法についての詳細なハウツーは次のとおりです: http://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password