0

我想将所有远程服务器名称作为 shell 脚本参数传递,然后希望我的脚本将给定的文件/目录复制到所有远程服务器。下面是我的代码。

#!/bin/bash
/usr/bin/expect <<EOD

#connect via scp

usr=Joe
pwd=Password
file_location=/home/file1.txt

for a in $@
do
  spawn scp -r $file_location  "$usr@$a:$file_location"

expect -nocase "password: "

send "$pwd\r"

expect eof
EOD

所有远程服务器的用户名和密码都相同。所以我暂时对它们进行硬编码,但是在运行脚本时我发现了一个问题..

>./scp1.sh server1 server2
invalid command name "usr=Joe"
while executing
"usr=Joe"

任何帮助表示赞赏。谢谢!

4

1 回答 1

1

expect读取命令行参数:

$argc - number items of arguments passed to a script.
$argv - list of the arguments.
$argv0 - name of the script.

这是取自这个网站

如果您需要更多帮助,请使用expectGoogle about,tcl因为它是语言expect的扩展tcl

于 2013-08-26T22:56:29.680 回答