Ошибка в скрипте expect

Модератор: Модераторы разделов

altlogic
Сообщения: 59
ОС: SuSe

Ошибка в скрипте expect

Сообщение altlogic »

Здравствуйте!

Изучаю expect на примерах, и не могу заставить работать простенький пример. В примере пользователь root логируется на удалённой машине, и выполняет команду uname.
Я чуть-чуть изменил код в поисках ошибки:

Код: Выделить всё

#!/usr/bin/expect

set timeout 1
set cmd {uname -a}

spawn ssh root@$argv
expect_after eof{ exit 0 }

expect {
    "assword: " {send "password\r"}
}

expect {
    "# " {send "uname -a\r"}
}

expect "$cmd\r"
{
    send "exit\r"
}


Спотыкается на строчке отправки новой команды. Как я понимаю пароль он вводит. Приглашение оболочки для пользователя root заканчивается именно на #

Лог ошибки:
altlogic@mgr:~> ./es_ssh 10.10.190.11
spawn ssh root@cn01
Password:
Last login: Wed Jan 23 11:24:59 2008 from mgr
invalid command name "}"
while executing
"}"
invoked from within
"expect -nobrace {# } {send "uname -a\r"}"
invoked from within
"expect {
"# " {send "uname -a\r"}
}"
(file "./es_ssh" line 13)

Почему возникает событие "invalid command name"?
Спасибо сказали:
altlogic
Сообщения: 59
ОС: SuSe

Re: Ошибка в скрипте expect

Сообщение altlogic »

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

Решение нашлось неожиданно:) Убрал ожидание непонятного eof. После этого скрипт заработал как часики:)

Пришлось ещё увеличить таймаут, чтобы он заработал как хорошие часики:)))
Спасибо сказали: