web-dev-qa-db-ja.com

リモートマシンからファイルを取得するsftpスクリプト

次の行を含むスクリプトを使用します。

sftp    [email protected]:/dir/file.txt

スクリプトを実行すると、パスワードを要求されます。

[email protected]'s password:

ただし、パスワードの入力を求められません。スクリプトでパスワード入力を自動化してファイルをダウンロードしたい

みんな、やりたくない。スクリプト内でそのプロンプトをキャッチしてパスワードを入力したいだけです。出来ますか?

sshpassはbashに属していますか?

これはまったく機能していません

3
user83570

SFTPは基本的にサーバー側のSSH + SFTPであるため、必要なのは、秘密鍵や公開鍵などの非対話型認証の一種です。使用しているOSに応じて、ssh-keygenを使用してキーを生成し、ssh-copy-idコマンドを使用して公開キーをサーバーにコピーできます。

4

最も簡単な方法:

sshpass -p 'password123' scp -- [email protected]:/dir/file.txt /local/dir

sshpassは機能している必要があり、sftpの場合も...書き込みパスワードを使用したスクリプトの権限を確認することを忘れないでください。

PD:コマンドでsshpassをインストールする必要があります(debianベースのディストリビューションの場合):

apt-get install sshpass
3
loooser

このプロセスを自動化する別の方法は、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で検索することができます

2
Raza

そもそもパスワードを必要としないように、鍵ベースの認証を使用する必要があります。

これを行う方法についての詳細なハウツーは次のとおりです: http://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password