Задать вопрос

Интерактивный скрипт с read при запуске системы (debian). Как?

Мне нужно, чтобы при запуске системы, у меня запустился скрипт
rc.local не поможет, так как в скрипте есть read, а rc.local не поддерживает терминал
bashrc не поможет, так как я хочу дёрнуть скрипт до логина

Давайте поподробнее распишу
У меня есть пользовательский образ debian, собранный с помощью live-build
В этом образе есть система виртуализации xen. В образ вшито 2 архива с гостевыми системами
В моём скрипте спрашивается для какой машины ставится образ. В зависимости от ответа распаковывается определённый архив, остальное удаляется
Это нужно сделать при первом запуске системы. Как бы в продолжении установки
Подскажите, пожалуйста как это сделать

Пока только из идей, это сделать автологин, далее в bashrc запускается мой скрипт, а в конце скрипта он удаляет автологин и свой запуск из bashrc
  • Вопрос задан
  • 1328 просмотров
Подписаться 4 Средний 5 комментариев
Решения вопроса 1
@thotem Автор вопроса
Сделал в итоге костыль, который потом убирает мусор после себя

в rc.local прописывается скрипт, который включает автологин
после него система сама запускается, тут же срабатывает bash.rc с нужным мне скриптом, в конце которого удаляется автологин и rc.local и сам bash.rc
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@rPman
Ввод пользователя должен кто то принять и передать в приложение, если X-сервер еще не запущен (хотя никто не мешает его запустить), то используй терминал, в linux сейчас используют agetty (этих *getty с десяток в репах можно подобрать).

Делать это в rc.local считается уже некошерным способом, поэтому делаешь скрипт systemd
anthropic claude sonnet 3.5
# /etc/systemd/system/my-script.service
[Unit]
Description=My Interactive Script
Before=getty.target

[Service]
Type=simple
ExecStart=/path/to/your/script.sh
StandardInput=tty
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes

[Install]
WantedBy=multi-user.target

google...
Ответ написан
NeiroNx
@NeiroNx
Программист
Либо загрузчик, либо грейтер. Во время загрузки нет интерактива.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
1. В read можно добавить timeout, и если никто в течение указанного времени ничего не ввел, он пойдет дальше с пустым значением, его можно проверить и поставить что-то по умолчанию.

2. В скрипт, который что-то читает, можно перенаправить готовый "файл ответов"
Ответ написан
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
А что ввести хочешь такого? Во время загрузки не работает интерактивный ввод, можно только заранее что-то куда-то положить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы