ожидать сценарий для автоматизации входа в систему Telnet - PullRequest
8 голосов
/ 17 октября 2011

Я пытался создать сценарий ожидания для автоматического входа на мое устройство через telnet

Если для ожидаемой команды нет нескольких возможностей, скрипт работает нормально, регистрируется на устройстве.

#!/usr/bin/expect
set timeout 20
set ip [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set password [lindex $argv 3]

spawn telnet $ip $port
expect "'^]'." sleep .1;
send "\r";
sleep .1;
expect   "login:"
send "$user\r"
expect "Password:"
send "$password\r";
interact

Сценарий выше работает нормально и успешно входит в систему, когда я передаю правильные параметры. Но как только я добавляю дополнительные ветви (для обработки ошибок) к команде ожидаемого, скрипт застревает в login: подсказке. Через некоторое время он печатает Ошибка скрипта Любая помощь?? Ошибочный скрипт ниже.

#!/usr/bin/expect
set timeout 20
set ip [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set password [lindex $argv 3]

spawn telnet $ip $port
expect "'^]'."
sleep .1;
send "\r";
expect
{
  "login:"
  {
        send "$user\r"
        expect "Password:"
        send "$password\r";
        interact

  }

  "host: Connection refused"
  {
    send_user "ERROR:EXITING!"
    exit
  }

}

PS: этот сценарий необходимо доработать, чтобы дождаться дополнительных запросов на загрузку разных образов сборки на устройство. Работает только телнет (консоль) соединение. так что ssh не вариант.

1 Ответ

5 голосов
/ 17 октября 2011

Мой плохой. Проблема была с фигурными скобками. Предполагается, что они находятся на одной строке с ожидаемой командой.

...