Я пытаюсь перезагрузить систему, используя ожидание. Вот мой код:Как вернуться к предыдущему сценарию в ожидании
#!/usr/bin/expect
set timeout 20
set name [lindex $arg0]
set user [lindex $arg1]
set password [lindex $arg2]
spawn telnet $name
expect "login:"
send "$user\n"
expect "Password:"
send "$password\n"
expect "<system prompt>$"
send "<some command>\n"
expect "<system prompt>$"
send "./my_script\n" --> code is below
send "<back to the telnet system prompt and running a builtin command>"
expect "g>"
send "some built in command"
Вот код для my_script (я перезагрузки системы здесь, после чего связь теряется и выше сценарий (основной сценарий) заканчивается на линии)
#!/usr/bin/expect
set name [lindex <some ip>]
set user [lindex <name>]
set password [lindex <password>]
spawn telnet $name
expect "Login:"
send "$user\n"
expect "Password:"
send "$password\n"
expect "<system prompt>"
send "reboot\n"
expect "Are you sure you want to reboot (y/n)?"
send "y"
Здесь он потерял соединение и никогда не возвращается к основному скрипту и продолжает работу с остальным скриптом.
ПРИМЕЧАНИЕ: он работает, если я положил взаимодействие в конце обоих скриптов, но я не хочу, чтобы мы взаимодействовали, поскольку мы ничего не хотим от пользователя.
Выполнение встроенных команд не происходит, что указано в главном скрипте? – Dinesh