Изучаю 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"?