我在Ruby中玩的是Expect,但是我对于如何根据要登录的设备的行为来分支代码感到有些困惑。我怎么能不这样说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
看来Expect方法只能查找单个模式(不同于Tcl Expect库,您可以在该库中同时查找多个模式)。
看来您必须传递“超时”参数并检查返回值:
if reader.expect(">", 2)
puts "foo.run"
else
# did not see ">" within 2 seconds
puts "foo.fail
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句