如何在Ruby expect脚本中使用条件

时间:2015-04-17 13:11:18

标签: ruby expect

我在Ruby中玩的是期望但是我根据我登录的设备的行为如何分支我的代码有点遗失。如果我在foo.run下面得到正确的提示,我怎么能说>,但如果我没有,请运行foo.fail?更进一步,如何评估输入密码和接收>提示之间的所有文本?有没有办法查看设备以某种方式打印的所有文本?

   def device_test(password)
      $expect_verbose = true
      PTY.spawn("ssh my-router") do |reader, writer, pid|
         reader.expect("password:")
         writer.puts(password)
         reader.expect(">")        
         puts "logged in"
         sleep(15)
      end
   end

1 个答案:

答案 0 :(得分:1)

看来expect方法只能查找单个模式(与Tcl期望库不同,您可以同时查找多个模式)。

看起来你必须通过"超时"参数并检查返回值:

if reader.expect(">", 2)
  puts "foo.run"
else
  # did not see ">" within 2 seconds
  puts "foo.fail
end