On Tue, 2014-04-29 at 12:20 -0700, ToddAndMargo wrote: > Hi All, > > I have a bash script that need to be run as root. > In the script, I check to see if it is running as > root and flag the user to run appropriately. > > Is there a way to use "su" to prompt for the password > and continue the script if successful? (I would test for > $? after the prompt.) > > Currently "su" will just open a new shell as root. > > I can run a command inside "su", but what about the > other 200 lines of code? :'(
An interesting problem :-) Something like this seems to work but I haven't thought through the consequences of it, so be aware: -----cut here----- #!/bin/sh this_script=$(basename $0) if [ $(id -u) -ne 0 ] then echo "Enter root's password" su -c ./$this_script exit fi echo "Hello world" echo "Running as $(id -u)" -----cut here----- You probably need to do something with $PATH to obviate the need for the "./" on the su line.
