Как из скрипта bash последовательно вызывать expect скрипты?

Ссылка скопирована
1 ответ

Пишу скрипт по дисанционному конфигурированию виртуальных машин.
Основной скрипт bash запускается, и последовательно вызывает expect-скрипты для разных машин. Но после выполнения тела скрипта expect он останавливается и не возвращает управление в тело bash:
- наверное потому что в конце скрипта expect стоит interact, но если его не ставить в expect последний блок команд вообще не работает,
- если в конце ставить expext eof то это тоже не спасает.
Возможно придётся сменить подход глобально.

Дополнительно:

Код где?

Ответы:

Вы линуксовые машины конфигурируете expect'ом? Тогда действительно - скорее глобально меняйте подход :)

Ансибл, как вариант

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Антон С. Ответ

Для последовательного вызова скриптов expect из скрипта bash можно воспользоваться командой expect -c, которая позволяет выполнить expect команды из строки в командной строке. Ниже приведен пример скрипта bash, который последовательно вызывает два expect скрипта:

#!/bin/bash
 
# Вызов первого expect скрипта
expect -c '
spawn ./first_expect_script.sh
expect "Enter your username:"
send "username\r"
expect "Enter your password:"
send "password\r"
expect eof
'
 
# Вызов второго expect скрипта
expect -c '
spawn ./second_expect_script.sh
# Дополнительные команды для второго скрипта
expect eof
'

#!/bin/bash # Вызов первого expect скрипта expect -c ' spawn ./first_expect_script.sh expect "Enter your username:" send "username\r" expect "Enter your password:" send "password\r" expect eof ' # Вызов второго expect скрипта expect -c ' spawn ./second_expect_script.sh # Дополнительные команды для второго скрипта expect eof '

В данном примере сначала вызывается первый expect скрипт (first_expect_script.sh), который ожидает ввод имени пользователя и пароля, после чего завершает свою работу. Затем вызывается второй expect скрипт (second_expect_script.sh), который может содержать дополнительные команды для автоматизации процесса.

Обратите внимание, что каждый блок команд expect -c должен быть заключен в одинарные кавычки (') для правильной интерпретации специальных символов. Кроме того, не забудьте установить права выполнения для ваших expect скриптов перед их запуском.

Надеюсь, этот ответ поможет вам решить вашу проблему с последовательным вызовом expect скриптов из скрипта bash. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно