2012-01-21 14 views
9

Tengo un script que solicita una entrada numérica del usuario mientras se arranca la computadora. El equipo está ejecutando Fedora 16. Se utiliza el trabajo, en Fedora 13, pero después de la actualizaciónAcceso a stdin durante el arranque systemd

read INTEGER 

vuelve inmediatamente, sin coger ninguna entrada del usuario. Intenté

read INTEGER 
wait $! 

pero (previsiblemente) eso tampoco funciona. El script se ejecuta desde un archivo de servicio systemd (ver comentarios a continuación). Es debe ejecutar como root, y debe iniciado antes de que el usuario inicie sesión. Actualmente llama a bash como su intérprete, pero con un poco de esfuerzo, eso podría cambiarse. ¿Alguien puede ayudar a devolver este script a la normalidad?

Crédito adicional: En F13, solía detener el arranque para la entrada del usuario (según lo deseado) pero la entrada no se visualizaba como el usuario escribía. ¿Hay alguna manera de agregar esta funcionalidad?

+1

no sé la respuesta a su problema específico, pero sí sé dónde empezar a buscar:. Examinar cómo systemd obras, que es el nuevo reemplazo de inicio de escritura un nuevo archivo systemd es en realidad bastante fácil, y poner la ejecución de su script también es fácil. Pero el problema es que necesita systemd para permitirle acceder a stdin, y ahí es donde no estoy seguro de si hay un token de configuración mágica que La lectura rápida de la página del manual systemd.unit no me muestra rápidamente. –

+0

Hm. Lo puse en un archivo systemd.service, que se ejecuta como se esperaba, pero no lo hará. aceptar la entrada del teclado. Estoy usando 'type = oneshot',' WantedBy = graphical.target', 'After = multiuser.target'. Will pruebe brevemente 'WantedBy = multiuser.target' para ver si eso ayuda. –

+0

Poniéndolo en la cola de '' multiuser.target' "(a falta de una palabra mejor) lo hace comenzar visiblemente, pero no interrumpe el inicio para obtener ayuda. @WesHardaker, ¿sabes lo que comienza systemd? –

Respuesta

1

Durante un arranque normal, el teclado está conectado a Plymouth (creo)

En Fedora, creo que usted quiere algo como:

plymouth ask-question --prompt="Pick a number between 0 and ∞" \ 
    --command="/usr/bin/numberguesser" 

posiblemente con

 --dont-pause-progress 

Eso debería mostrar la pantalla de solicitud de Plymouth, no muy diferente de la forma en que los sistemas de archivos criptográficos solicitan sus contraseñas.

Tenga en cuenta que /usr/bin/numberguesser solo obtendría la cadena ingresada canalizada en su entrada estándar.

No comprobado, lo siento :-(

Cuestiones relacionadas