3

scp を使用して、リモート サーバーから Bash のローカル ドライブに複数のファイルをコピーしようとしています。これがコードの一部です

scp -r -q $USR@$IP:/home/file1.txt $PWD
scp -r -q $USR@$IP:/home/file2.txt $PWD
scp -r -q $USR@$IP:/root/file3.txt $PWD

ただし、問題は、ファイルをコピーするたびに、同じサーバーのパスワードを要求し続けることです。一度だけ尋ねてから、すべてのファイルをコピーしたい。

そして、私はそうしたくないので、rsync やキー認証ファイルの作成を提案しないでください。他に方法はありますか...?どんな助けでもいただければ幸いです

4

3 に答える 3

1

スクリプトexpectまたはsshpass

sshpass -p 'password' scp ...

#!/usr/bin/expect -f
spawn scp ...
expect "password:"
send "ur_password"

欠点は、パスワードがプレーンテキストになっていることです

于 2013-10-03T16:35:35.773 に答える
0

リモートサーバーからファイルをscpできる場合は、sshでリモートファイルのtarballを作成することもできると思います。

-r フラグは再帰的で、ディレクトリ全体をコピーしますが、コマンドで個別のファイルをリストするため、 -r は不要になります。

リモート システムの bash シェルからこれを試してください。

$ mkdir /home/file_mover
$ cp /home/file1.txt /home/file_mover/
$ cp /home/file2.txt /home/file_mover/
$ cp /root/file3.txt /home/file_mover/

$ tar -cvf /home/myTarball.tar /home/file_mover/

$ scp -q $USR@$IP:/home/myTarball.tar  $PWD                
于 2013-10-03T16:42:20.880 に答える
0

さて、この特定のケースでは、次のように書くことができます...

scp -q $USR@$IP:/home/file[1-3].txt $PWD
于 2013-10-03T19:40:37.440 に答える