-1

最初のパスワードが失敗した後、別のパスワードを返すことができるようにする必要があります。これは、プロンプトが同じ期待値「Password:」を要求する 2 回目になります。

(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

問題は、二重引用符を使用してexpectスクリプトをグループ化することです。bashはbash変数$variablesとして解釈しています。次のいずれかを行う必要があります。

  1. 一重引用符を使用してスクリプトを区切る、または
  2. すべてをエスケープする\$expect_variablesので、bashは最初にそれらを置き換えません。
于 2012-10-30T13:57:54.957 に答える