避免期望编程的超时

时间:2015-09-02 12:10:42

标签: timeout expect

目前我们已经使用expect编程编写了一个登录方法。它需要密码,如果有超时,则会出错。我们在tcl中编写了以下代码:

git fetch

现在我们正在观察即使登录成功,代码也在等待超时期限,因此耗费了一些时间。

所以有人建议如何在登录发生后立即返回成功,而不是等待超时到期?

1 个答案:

答案 0 :(得分:1)

使用exp_continue,我们可以轻松处理此问题。

set prompt "#|>|\\\$"; # Some commonly used prompts
# We escaped dollar symbol with backslashes, to treat it as literal dollar
expect {
        -i $var 
        timeout {puts "Timeout happened"; return 0}
        "(yes/no)" {send -i  $var "yes\r";exp_continue}
        -re ".*pass" {send -i  $var "$pwd\r";exp_continue}
        "Permission denied" {puts "Permission denied";return 0;}
        -re $prompt {puts "Login successful!!!";return 1}
}