指定された変数 ($user) ではなく、ユーザー資格情報の入力を求められたときに、Expect が $expect_out(buffer) を送信しています。その後、タイムアウトします。以下はコードです:
...
}
"yes" {
send_user "\nEnter your username for the WLC supporting the new APs:\n"
sleep 6
}
}
expect {
-re "(.*)\n" {
set user $expect_out(1,string)
}
}
send_user "\nEnter your password for the WLC supporting the new APs:\n"
sleep 15
expect {
-re "(.*)\n" {
set pass $expect_out(1,string)
}
}
sleep 1
send_user "\nSshing to the IP of the WLC supporting the new APs ($wlc_temp)\n"
spawn ssh $wlc_temp
expect {
"User:" {
send $user\n
sleep 1
}
}
expect {
"assword:" {
send $pass\n
sleep 1
}
}
以下は結果です。
(デバイスのホスト名) ユーザー: (デバイスのホスト名) ユーザー:
以下はデバッグです。
新しい AP をサポートする WLC の IP に Sshing () spawn ssh 親: 同期バイトを待機中 親: 子に先に進むように指示 親: 子から同期されていない spawn: {7153} を返す
期待: "" (spawn_id exp6) は glob パターン "User:" と一致しますか? 番号
期待: "\r\n" (spawn_id exp6) は glob パターン "User:" と一致しますか? いいえ (デバイスのホスト名) ユーザー:
期待: "\r\n(device hostname) User:" (spawn_id exp6) は glob パターン "User:" と一致しますか? はい expect: set expect_out(0,string) "User:" expect: set expect_out(spawn_id) "exp6" expect: set expect_out(buffer) "\r\n(device hostname) User:" send: send "\n" { exp6 } へ
予想: " " (spawn_id exp6) は glob パターン "assword:" と一致しますか? 番号
(デバイスのホスト名) ユーザー:
期待: "\r\n(device hostname) User:" (spawn_id exp6) は glob パターン "assword:" と一致しますか? 予期しない: タイムアウト
更新: ユーザー入力を要求するステートメントをスクリプトの先頭に再配置すると、回避策として機能しました。