Supply SU password in a bash script, within the script?

The purpose is to restart the machine if it doesn't get an abort command from the user. The problem is that the way the terminals are set up, user must supply SU password for shutdown, init, reboot, etc. commands. We are wondering if it's possible to supply password in bash script itself, maybe using stdin. i.e.:

#!/bin/bash
# (script)
echo "Terminal will restart in 60s, Ctrl+C to cancel."
sleep 60
su - root -c "init 6" < "password"

We are going to try putting the password in a file and stdin that.

Edit: sudo and expect are out as solutions as getting them installed will be impossible due to a massive amount of paperwork for permission and a limited timeframe. Also we would like to use init 6 or shutdown -r rather than reboot.


Solution 1:

You can configure sudo to allow any user to run certain commands you specify, as root, without having to type a password. See this Server Fault article for a description of how to configure sudo.

Then, in your script, use sudo rather than su:

sudo reboot

Solution 2:

AFAIK you cannot do what you are asking for. When you are using stdin with <, the password will be input via stdin much before the shell actually asks for the password. You should try and use sudo. If not, your best bet is to chmod reboot and give yourself execute privileges.