I need to be able to return a different password after the first one fails which will be the second time the prompt asks for the same expect value “Password:”
(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;
}
}
I just can’t get it to work. It looks like there is nothing in the lindex send:
-ex "Password:" {
send "[lindex ]\r"
The problem is you’re using double quotes to group the expect script — bash is interpreting the
$variablesas bash variables. You need to either:\$expect_variablesso bash does not substitute them first.