Perl Expect.pm expect()异常、

来源:互联网 发布:gta5ol女神捏脸数据 编辑:程序博客网 时间:2024/05/19 09:12

$exp->Expect::spawn(....);
$exp->send(cmd);
$exp->expect($timeout ,'-re',$prompt);

如果命令的输出非常多时,Expect会一组一组的将返回结果读取到缓存中
每次读取2048个字节。
每次读取完就追加到缓存,然后用缓存的数据匹配 prompt便cmdprompt却匹配上了,而结束expect。

看起来也很合理,但是如果我们的 prompt’结尾符号时,这种匹配方式就会出问题。
如:$prompt = '[\$%#>]\s*$'
那么匹配到的就未必是我们想要的东西。

在Net::SSH::Expect里面也存在这个问题,因为SSH这个包底层就是调用的Expect.pm

解决方法:
连续发送两条命令,第二次发送一个静态的数据,(echo   SSH_TEST_CMD) ,先等待“SSH_TEST_CMD”,再等待$prompt


原创粉丝点击