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

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

概述以下简单期望脚本的目标是获取远程计算机上的主机名 有时候期望脚本无法执行ssh到$IP_ADDRESS(因为远程机器不活动等) 所以在这种情况下,期望脚本将在10秒后超时(超时10),这是可以的但…… 有两种选择 > Expect脚本成功执行ssh,并在远程计算机上执行命令hostname >期待脚本中断,因为超时为10秒 在这两种情况下,预计将退出 >如果ssh成功预期会在0.5-1秒之后中断, 以下简单期望脚本的目标是获取远程计算机上的主机名

有时候期望脚本无法执行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 "yes\r"  ; exp_continue  }  >   >                      word:  {send $PASS\r}  >                   }  > expect >  {send "hostname\r"}  > expect >    {send exit\r}  > 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 "yes\r"  ; exp_continue  }    word:   { send $PASS\r}    timeout { puts "Failed to SSH" }       }
总结

以上是内存溢出为你收集整理的linux – 期望如何识别是否因为超时而打破?全部内容,希望文章能够帮你解决linux – 期望如何识别是否因为超时而打破?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1037434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存