Рейтинг:1

Использование expect для автоматизации установки Alpine Linux в FreeBSD в Bhyve

флаг mx

Я пытаюсь автоматизировать установку Alpine Linux в vm-bhyve под FreeBSD и ожидаю, что система умрет вскоре после истечения времени ожидания в меню загрузки и запустит установку Alpine Linux.

#!/usr/bin/env ожидать
spawn vm install -f alpine alpine.iso # сокращено для краткости
ожидать "локальный вход в систему:"
отправить "корень\r"
...

Это приводит к следующей ошибке:

"при выполнении
"отправить "корень\r"

Я подозреваю, что всякий раз, когда экран очищается и он начинает загружаться, это сбивает с толку, ожидая, что программа будет выполнена? И, как следствие, скрипт умирает.

Я никогда раньше не кодировал ожидание таким образом, возможно ли это сделать с ожиданием?

Я также попытался установить глобальный тайм-аут перед запуском vm install cmd, который загружается и сразу переходит в консоль для гостя, но это ничего не изменило, поэтому я исключил его из сценария выше. Сон в том же месте не помог, он просто задержал загрузку (и последующий сбой на количество, которое я установил для сна).

РЕДАКТИРОВАТЬ: Я пытаюсь запустить установщик в фоновом режиме, спать 30 секунд, затем подключить консоль. В этот момент ожидайте должен работай.

флаг fo
Я бы рекомендовал использовать `autoexpect` для записи полностью интерактивной установки. Полученный код ожидания очень многословен, но при необходимости его можно очистить.
флаг fo
Кроме того, при разработке сценария ожидания запустите его с помощью `expect -d`, чтобы включить подробный вывод отладки: это может точно указать, почему ваши шаблоны ожиданий не совпадают (часто есть «скрытые» пробелы).
флаг mx
Отличная идея, я не знал, что существует. К сожалению, это тоже умирает, я *думаю* терминалу не должно нравиться. Он действительно захватил больше вывода, как и ожидалось .
Рейтинг:0
флаг mx

У меня это работает в обоих случаях (vm install -f и использование консоли vm для подключения к работающей виртуальной машине).

Проблема в моем случае заключалась в том, что я начал с новой конфигурации, и эта новая конфигурация имела недопустимую настройку (прохождение PCI). Я думал, что загрузился без ожидания, и это сработало; однако я уже переустановил образ машины, и моя конфигурация была перезаписана.

Использование autoexpect позволило мне получить больше деталей, чем в противном случае, и это отличный способ подготовить сценарии ожидания.

Теперь процесс для меня состоит в том, чтобы выполнить установку freebsd с последующей загрузкой в ​​​​систему и при запуске проверить, существуют ли виртуальные машины, если нет, создать их с помощью expect.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.