Como o usuário interage durante a inicialização usando upstart? [duplicado]

2

Eu quero adicionar uma pergunta durante a inicialização. O usuário deve fazer entradas de teclado e, dependendo dessas entradas, há um se dentro do script.

"Você quer X ou Y?"

"Ou simplesmente aguarde 10 segundos para usar o padrão como X".

    
por James Mitch 09.07.2012 / 20:44

1 resposta

2

É um pouco complicado, mas você pode usar o plymouth para conversar com o usuário enquanto o sistema está chegando. Isso só funcionará se o seu trabalho bloquear a inicialização, porque uma vez que o nível de execução 2 for atingido e o plymouth for finalizado, você não poderá interagir mais.

Basicamente você quer executar 'plymouth ask-question' ou 'plymouth watch-keystroke' e o usuário será solicitado. Então, se você quiser esperar 10 segundos pelo usuário, você teria um trabalho inicial como este (isso é bastante teórico e não foi testado!):

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
    
por SpamapS 06.08.2012 / 22:17