【发布时间】:2012-03-28 03:54:26
【问题描述】:
以下简单的期望脚本的目标是获取远程机器上的主机名名称
有时期望脚本无法执行 ssh 到 $IP_ADDRESS(因为远程机器不活动等)
所以在这种情况下,expect 脚本将在 10 秒后中断(超时 10),这没关系,但是......
有两种选择
- 期望脚本成功执行 ssh,并在远程机器上执行命令主机名
- 预计脚本会中断,因为超时为 10 秒
在这两种情况下,expect 都会退出
- 在 ssh 成功的情况下,预期会在 0.5-1 秒后中断,但在 ssh 错误的情况下,它将在 10 秒后中断
但不知道expect脚本是否成功执行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
【问题讨论】:
标签: linux shell tcl ksh expect