Как взаимодействовать с пользователем во время загрузки с помощью выскочки? [дубликат]

Возможный дубликат:
Сценарий Upstart: обнаружение клавиши Shift при загрузке

Я хочу добавить вопрос во время загрузки . Пользователь должен вводить данные с клавиатуры, и в зависимости от этих вводов внутри скрипта есть if.

«Хотите X или Y?»

«Или просто подождите 10 секунд, чтобы по умолчанию X».

2
задан 13 April 2017 в 15:23

1 ответ

Это немного сложно, но вы можете использовать плимут, чтобы общаться с пользователем, пока система запускается. Это будет работать только в том случае, если ваша работа блокирует запуск, потому что как только уровень выполнения 2 достигнут и plymouth завершен, вы больше не сможете взаимодействовать.

По сути, вы хотите выполнить «plymouth ask-question» или «plymouth watch-keystroke», и пользователю будет предложено это сделать. Так что, если вы хотите подождать 10 секунд для пользователя, у вас будет такая выскочка (это довольно теоретически и не проверено!):

start on starting rc RUNLEVEL=[2345]
task
script
  myscript=`mktemp /tmp/killme.sh.XXXXXX`
  chmod 0750 /tmp/killme.sh
  cat > $myscript <<EOF
#!/bin/sh
# script is sent key pressed
cat > /tmp/keypresses.txt
kill -USR1 $
EOF
  key=""
  handle_usr1() {
    key=`cat /tmp/keypresses.txt`
    plymouth display-message --text="you pressed $key"
    exit 0
  }
  trap handle_usr1 USR1
  plymouth watch-keystroke --command=$myscript --keys="ABCD"
  timeleft=10
  while [ $timeleft -gt 0 ] ; do
    plymouth display-message --text="you have $timeleft seconds to press A,B,C, or D..."
    timeleft=(($timeleft-1))
  done
  plymouth display-message --text="Timed out..."
end script
0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

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