linux – 期望如何识别是否因为超时而打破?

前端之家收集整理的这篇文章主要介绍了linux – 期望如何识别是否因为超时而打破?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下简单期望脚本的目标是获取远程计算机上的主机名

有时候期望脚本无法执行ssh到$IP_ADDRESS(因为远程机器不活动等)

所以在这种情况下,期望脚本将在10秒后超时(超时10),这是可以的但……

有两种选择

> Expect脚本成功执行ssh,并在远程计算机上执行命令hostname
>期待脚本中断,因为超时为10秒

在这两种情况下,预计将退出

>如果ssh成功预期会在0.5-1秒之后中断,但是如果ssh不好则会在10秒后中断

但我不知道是否期望脚本成功执行ssh?

是否可以识别超时过程?或者验证期望因超时而结束?

备注我的Linux机器版本 – red-hat 5.1

期待脚本

  1. [TestLinux]# get_host_name_on_remote_machine=`cat << EOF
  2. > set timeout 10
  3. > spawn ssh $IP_ADDRESS
  4. > expect {
  5. > ")?" { send "yes\r" ; exp_continue }
  6. >
  7. > word: {send $PASS\r}
  8. > }
  9. > expect > {send "hostname\r"}
  10. > expect > {send exit\r}
  11. > expect eof
  12. > EOF`

我们没有连接到远程主机的示例

  1. [TestLinux]# expect -c "$get_host_name_on_remote_machine"
  2. spawn ssh 10.17.180.23
  3. [TestLinux]# echo $?
  4. 0

解决方法

你可以期待超时,某些版本需要-timeout就像-regex一样来测试超时的调用.

你期望声明可以成为

  1. expect {
  2. ")?" { send "yes\r" ; exp_continue }
  3. word: { send $PASS\r}
  4. timeout { puts "Failed to SSH" }
  5. }

猜你在找的Linux相关文章