linux – 期望如何判断是否因为超时而中断?
发布时间:2020-12-14 01:37:11 所属栏目:Linux 来源:网络整理
导读:以下简单期望脚本的目标是获取远程计算机上的主机名 有时候期望脚本无法执行ssh到$IP_ADDRESS(因为远程机器不活动等) 所以在这种情况下,期望脚本将在10秒后超时(超时10),这是可以的,但…… 有两种选择 Expect脚本成功执行ssh,并在远程计算机上执行命令hostna
以下简单期望脚本的目标是获取远程计算机上的主机名
有时候期望脚本无法执行ssh到$IP_ADDRESS(因为远程机器不活动等) 所以在这种情况下,期望脚本将在10秒后超时(超时10),这是可以的,但…… 有两种选择 > Expect脚本成功执行ssh,并在远程计算机上执行命令hostname 在这两种情况下,预计将退出 >如果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 解决方法
要在超时时做出明智的事情,你需要告诉预期会发生什么:
set timeout 10 expect { ")?" { send "yesr" ; exp_continue } "word:" { send "$PASSr" } timeout { puts "timed out during login"; exit 1 } } set timeout -1 ; # Infinite... expect ">" { send "hostnamer" } expect ">" { send "exitr" } expect eof exit 请注意上面我在遇到错误时如何使用exit 1.你的shell将能够通过$?等来选择它.(如果没有1参数,exit命令将导致脚本“成功”终止;如果你放弃脚本的底部,也会发生同样的情况.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |