Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: expect обновление системы  (Прочитано 492 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sultanov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
expect обновление системы
« : 15 Июня 2012, 18:27:51 »
Доброе время суток. Никак не могу заставить expect дождаться строки приглашения системы.
Перейду сразу к коду

#!/usr/bin/expect

log_user 1
set timeout 2
set host_name [lindex $argv 0]
set host_pass [lindex $argv 1]
set prompt "(%|#|\\$) $";
catch {set prompt $env(EXPECT_PROMPT)}

if { [string length $host_name] > 0 } {
spawn ssh localadmin@$host_name
expect {
-exact "Are you sure you want to continue connecting (yes/no)? " { send "yes\r"; sleep 2; exp_continue }
sleep 2
-exact "password:" {
sleep 2
send "$host_pass\r"
expect "%"
send "su root\r"
sleep 2
expect "%"
send "$host_pass\r"
expect "%"
send "apt-get upgrade\r"
expect -re "\[Д/н\]?\r"
send "y\r"
expect -re $prompt
send "exit\r"
expect "%"
send "exit\r"
}
}
expect eof
}

Предложение "Хотите продолжить [Д/н]?" обрабатывается верно, но пока апгрейтится система, expect выполняет остальные все команды и завершается.


Как expect заставить нормально ожидать выполнения действий запущенных на удаленной машине?

 

Страница сгенерирована за 0.017 секунд. Запросов: 21.