期望返回相同的值

时间:2012-10-29 15:58:43

标签: bash tcl expect

我需要能够在第一个密码失败后返回一个不同的密码,这将是第二次提示要求相同的期望值"密码:"

(expect -c "

 #exp_internal 1
  set passwords {PASS1 PASS2}
  set index 0 
  set timeout 20
  # Start the session with the input variable and the rest of the hostname
  spawn telnet $host
  set timeout 3 
  expect {
-ex     \"Password:\" {
            send \"[lindex $passwords $index]\r\"
            incr index  
 exp_continue;
  }
  }

我无法让它发挥作用。看起来lindex发送内容中没有任何内容:

 -ex     "Password:" {
    send "[lindex  ]\r"

1 个答案:

答案 0 :(得分:0)

问题是你使用双引号对期望脚本进行分组 - bash将$variables解释为 bash变量。你需要:

  1. 使用单引号分隔脚本,或
  2. 转义所有\$expect_variables,因此bash不会先取代它们。