expect脚本中设置超时,好比下面的脚本

expect脚本中设置超时,好比下面的脚本


文件expect_ssh_scp.sh
#!/usr/bin/expect                                                                              #表示使用expect解释器
set timeout 10                                                                                  #设置超时限制为10秒
spawn ssh userName@hremote_host command                            #经过ssh链接远程主机执行命令
expect {                                                                                            #第一个expect语句
     "(yes/no)" {send "yes\r";exp_continue}
     "*assword:" {send "password\r"}
}

expect eof                                                                                       #指明命令交互结束
spawn scp source userName@hostName:dest                             #经过scp复制远程电脑的文件到本地
expect {                                                                                          #第二个expect语句
"(yes/no)" {send "yes\r";exp_continue}
"*assword:" {send "password\r"}
}


expect 100%
expect eof
exit


我想知道这个超时10秒,是对全部的expect语句有效,仍是只针对第一个啊?

若是超时限制对下面全部的expect语句都有效,好比下面的scp远程复制命令,若是数据没传输完,程序就超时了,那怎么解决呢?

那样的话expect 100%这句代码又有什么做用??

我看到一种解释是:代码刚开始设定了timeout的时间为10秒,若是在执行scp任务时遇到了代码中没有指定的异常,则在等待10秒后该脚本的执行会自动终止。这样理解对吗?

干吗要这个超时限制啊,感受很影响程序的效率,在执行过程当中碰见问题就返回问题信息,退出不就行了么,就算多给10秒,还不是无法解决。就比如Java中的异常处理机制,碰见异常就,throw  catch处理嘛,而后程序继续执行,这样多好,

若是某一个方法很是耗时,那么就等它执行完呗,就算有一天,出现无限循环这种永远的执行不完的方法,设定一个超时,这样的逻辑感受不对吧,出现无穷循环的问题明显是设计的问题ssh

厂家直销特大码男鞋新款皮鞋正装韩版男士休闲皮鞋男鞋商务鞋代发spa

相关文章
相关标签/搜索