- 论坛徽章:
- 0
|
回复 5# ludio333
请教个问题~
- $PROMPT ='[$#]';
- $cmd="/usr/bin/scp";
- eval {$exp = Expect->spawn($cmd,@params) or die "Can't spawn @_:$!\n"};
- if($@){
- print "$@\n";
- exit;
- }
- $exp->log_stdout(0);
- ( $pos, $err, $match, $before, $after )=$exp->expect($timeout,
- [ qr/[Pp]assword.*?:|[Pp]assphrase.*?:/ => sub { $exp->send("$logbase_pwd$t"); exp_continue; } ],
- [ qr/\(yes\/no\)\?\s*$/ => sub { $exp->send("yes$t"); exp_continue; } ],
- [ qr/$PROMPT / => sub { print "OK\n"; } ]
- );
- $exp->soft_close();
- print "err:$err\n";
- print "match:$match\n";
- print "before:$before\n";
- print "after:$after\n";
复制代码 打印结果如下,
err:3:Child PID 21092 exited with status 0
before:
log.2012022901 100% 60MB 60.3MB/s 00:01
after:
以前用过命令行的expect工具,这个是能等到$PROMPT的,
但这个Expect模块却会在scp命令结束的时候,立马结束,
因此会出现上面scp的运行结果status 0
$exp->expect()如何能匹配$PROMPT呢?
|
|