-1

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

(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"
4

1 回答 1

0

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

  1. 使用单引号来分隔脚本,或者
  2. 逃避所有这些,\$expect_variables所以 bash 不会首先替换它们。
于 2012-10-30T13:57:54.957 回答