输入密码一次scp多个远程文件

时间:2014-10-14 15:03:30

标签: linux bash scp

我试图编写一个脚本,将多个文件(在多个目录中)从远程主机复制到本地计算机。

我的剧本(或多或少)如下:

path1="/home/db/primary/*.xml"
path2="/tmp/log_*"
copyto="/home/pathtodesktop/Desktop/temp"

mkdir $copyto

scpcommand="scp -o StrictHostKeyChecking=no root@$address:\"$path1 $path2\" $copyto"
echo $scpcommand
$scpcommand

当我运行脚本时,我得到以下输出:

scp -o StrictHostKeyChecking=no root@SERVER:"/home/db/primary/*.xml /tmp/log_*" /home/pathtodesktop/Desktop/temp
sh: syntax error: unterminated quoted string
cp: cannot stat '/tmp/log_*"': No such file or directory

回声的输出符合预期。但是当我复制上面的输出并在终端中手动运行命令时,它按预期工作,没有错误。

所以最终的问题是,我做错了什么?在终端中手动运行时,该命令似乎工作正常。我的语法错误在哪里?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

添加set -f会阻止路径中的通配符在本地扩展(尽管您可能会遇到其他有空格/特殊字符的问题)。

(您可以使用set +f

重新启用通配符