Ожидайте, что скрипт пропустит неверный пароль - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть следующий код:

#!/usr/bin/expect
set timeout 20
set port "23"
set user "admin"
set password "1234"
set ip_file "devices"
set fid [open $ip_file r]
while {[gets $fid ip] != -1} {
spawn telnet $ip $port
expect "'^]'." sleep .1;
send "\r";
sleep .1;
expect   "login:"
send "$user\r"
expect "Password:"
send "$password\r"
expect "#\r"
send "conf\r"
send "username root privilege 15 password toor\r"
send "no username admin\r"
send "end\r"
send "wr\r"
send "y\r"
send "exit\r"
expect eof

}
close $fid

Мне нужно знать, как перейти к следующему ip с «устройств», если пароль неверный. Также нужно записать тот ip устройства, где пароль был неверным, в локальный файл, из которого был выполнен скрипт.

Спасибо!

1 Ответ

0 голосов
/ 03 апреля 2019

ОК, здесь вы попадаете в более сложное использование команды expect: вы передаете ей список пар шаблон / действие: не проверено

expect "Password:"
send "$password\r"
expect {
    "login:" {
        # bad password: hit Ctrl-C and move on to the next IP
        send \x03
        expect eof
        continue
    }
    "#\r"
}
# we've seen the prompt so you can carry on with the rest of your script

В этом случае ожидайте, что ветвление будет основано на шаблоне first , который он может найти.

...