有没有一种方法可以在TCL中将条件语句设为IF CONDITION?

时间:2020-02-20 20:29:41

标签: tcl expect

有没有一种方法可以对期望命令进行条件设置。例如,在下面的代码中,我试图将SSH转换为特定的IP地址,有时它会问我“您确定要继续连接(是/否)吗?”有时并非如此。如何使它显示为 IF ,我发送“是/ r”,而发送 IF ,不是,我继续输入我的代码?

set name="123.456.78.910"
expect "$ "     ;       send -- "ssh root@$name\r"
expect {
  "Password:" { send "password" }
  timeout   { sleep 1 }

}

expect "Are you sure you want to continue connecting (yes/no)?" ; send -- "yes\r”

1 个答案:

答案 0 :(得分:1)

这是exp_continue命令的目的:

spawn ssh user@host

set prompt {\$ $}    ;# or whatever regex your prompt matches

expect {
    timeout {error "timed out connecting to host"}
    "continue connecting" {send "yes\r"; exp_continue}
    "Password:" {send "$password\r"; exp_continue}
    -re $prompt
}

send "do stuff\r"
# ...

如果期望超时,则脚本错误。
如果,您收到“继续连接”提示,则发送“是”并继续等待。
如果,您收到“密码”提示,请发送密码并保持期望。
,当您得到shell提示时,expect命令完成,并继续执行程序。