加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 03:05:20 所属栏目:Linux 来源:网络整理
导读:以下简单期望脚本的目标是获取远程计算机上的主机名 有时候期望脚本无法执行ssh到$IP_ADDRESS(因为远程机器不活动等) 所以在这种情况下,期望脚本将在10秒后超时(超时10),这是可以的但…… 有两种选择 Expect脚本成功执行ssh,并在远程计算机上执行命令hostnam
以下简单期望脚本的目标是获取远程计算机上的主机名

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

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

有两种选择

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

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

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

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

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

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

期待脚本

[TestLinux]# get_host_name_on_remote_machine=`cat << EOF
  > set timeout 10
  > spawn  ssh   $IP_ADDRESS
  >            expect {
  >                      ")?"   { send "yesr"  ; exp_continue  }
  > 
  >                      word:  {send $PASSr}
  >                   }
  > expect >  {send "hostnamer"}
  > expect >    {send exitr}
  > expect eof
  > EOF`

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

[TestLinux]# expect -c  "$get_host_name_on_remote_machine"
 spawn ssh 10.17.180.23
 [TestLinux]# echo $?
 0

解决方法

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

你期望声明可以成为

expect {
    ")?"    { send "yesr"  ; exp_continue  }
    word:   { send $PASSr}
    timeout { puts "failed to SSH" }
       }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读