Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I have a script which solicits a numeric input from the user while booting the computer. The computer is running Fedora 16. It used work, on Fedora 13, but after the upgrade

read INTEGER

returns immediately, without catching any user input. I tried

read INTEGER
wait $!

but (predictably) that too doesn't work. The script is run from a systemd service file (see comments below). It must be run as root, and must started before the user logs in. It currently calls bash as its interpreter, but with some effort, that could be changed. Can anyone help return this script to normal?

Extra credit: In F13, it used to halt booting for user input (as desired) but the input was not displayed as the user typed. Is there a way to add this functionality?

Alternatively, I could cue a graphical interface (e.g. from tkinter/Python) to ask for INTEGER after graphical.target loads. Any thoughts on how I might do this? Is it straightforward to load things with windows before the desktop loads?

share|improve this question

1 Answer 1

Use the systemd-ask-password command and systemd will take care of prompting the user for input in an appropriate manner, either using a text prompt or a graphical prompt.

share|improve this answer
    
That's an excellent suggestion. Unfortunately, it still doesn't interrupt startup, so I still don't get input. I found StandardInput in the systemd.unit man page, which I think would also solve the stdin issue, if not the interruption-of-startup issue. I tried setting StandardInput=tty-force but it didn't help with the start-up interruption issue. I know I'm not getting instant EOF (as I was before) because the program would flag it. –  Mark C. Jan 23 '12 at 22:35
    
It certainly should work at boot time - there are agents for both the text mode console and the plymouth graphical console. Trying to access the terminal directly is just not going to work. –  TomH Jan 23 '12 at 22:46
    
Hm. It's not using the Plymouth agent nor the text-mode agent; instead, when I open Gnome terminal after boot, it pings me every so often asking for me to log in as root and use systemd-tty-ask-password-agent. –  Mark C. Jan 24 '12 at 8:49
1  
Could you update your answer as to exactly how to use systemd-ask-password? Is it in the service as some part of ExecStart? Writing it into it's own service that needs to be called before the password-requiring service is called? The docs talk about the command, but not how to use it in conjunction with a service that needs a password... Thanks for assisting a confused systemd noob! –  Hendy Nov 8 '12 at 17:13
    
The program that wants the password should invoke systemd-ask-password and then use the result as the password. –  TomH Nov 8 '12 at 17:33

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.