【发布时间】:2014-03-04 11:27:06
【问题描述】:
我正在编写 perl 脚本来将目录复制到远程机器。 我正在使用一个期望模块来接收密码并发送密码。
但出现如下语法错误
sh: -c: line 0: 意外标记附近的语法错误
scp'system(scp -r /home/user1/data/192.168.0.1:/tmp/)'
sh: -c: line 0:
perl 脚本是:
use Expect;
$Expect::Debug=2;
$cmd="scp -r /home/user1/data/ 192.168.0.1:/tmp/";
my $exp1=Expect-> spawn("system($cmd)") or die print "cannot spwan process\n";
$exp1-> expect(10,["root@192.168.0.1's password: "=>sub{ $exp1-> send("usr1234\r");}]);
提前谢谢你
【问题讨论】:
-
你不想要
spawn($cmd)而不是spawn("system($cmd)")吗? -
spawn($cmd) 没有给出错误..
-
只要我执行这个脚本并设置一个调试 root@192.168.0.1 的密码:等待新数据(10 秒)...正在出现 ..此时它没有获取任何数据......所以密码不会发送......你能帮我解决这个问题......leeduhem
-
错误没有再次出现,但是现在无法发送密码..因为它应该期待的字符串甚至在它开始期待之前就已经出现了......
-
这不应该发生。如果输出出现在控制台上,这通常意味着
Expect已完成。例如,如果对象被破坏或您明确清空句柄。我会假设它会立即匹配,但您的子无法执行您想要的操作。