newbie: popen question

Sean DiZazzo half.italian at gmail.com
Thu May 28 04:11:17 EDT 2009


On May 27, 6:10 pm, thebiggestbangthe... at gmail.com wrote:
> hello everyone :-),
>                          I am a newbie to python. I am trying to run a
> bash script from within a python program. I would greatly appreciate
> any pointers/comments about how to get around the problem I am facing.
>
> I want to run  bash script: code.sh from within a python program.
> code.sh needs to be run like so from the command line
> [code]
> $ sudo code.sh arg1 arg2
> [/code]
>
> I read up on some documentation but am not very clear about how to use
> popen. I want to relegate the shell to a background process, but it
> needs to accept the sudo passwd too!
>
> I have tried
> [code]
> p = subprocess.Popen(['/bin/bash', 'sudo '+mypath+'code.sh '+arg1+'
> '+arg2],
>                                     stdout=subprocess.PIPE,
>                                     stderr=subprocess.STDOUT)
> [/code]
> I tried some code from stackoverflow.com/questions/694000/why-doesnt-
> subprocess-popen-always-return
>
> nothing really happens when this executes, the PIPE option pshes it to
> the background and I can't push in the sudo passwd. Can someone please
> give me an idea of how to go about this.
>
> To recap, I want to run a shell script, which needs to be started with
> sudo, and then push it into the background.
>
> Thanks,
> -A

Your best bet is to make sudo not ask for a password.  :)  If you
don't have the rights, then you can use pexpect to do what you want to
do.  http://pexpect.sourceforge.net/pexpect.html

See the second example on that page.

child = pexpect.spawn('scp foo myname at host.example.com:.')
child.expect ('Password:')
child.sendline (mypassword)

~Sean



More information about the Python-list mailing list