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 -q $USR@$IP:/home/file[1-3].txt $PWD
于 2013-10-03T19:40:37.440 回答
0

我假设如果您可以从远程服务器 scp 文件,您也可以通过 ssh 进入并创建远程文件的 tarball。

-r 标志是递归的,用于复制整个目录,但您在命令中列出不同的文件,因此 -r 变得多余。

从远程系统上的 bash shell 试试这个:

$ 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 回答