subprocess escaping POpen?!

Ryan Kelly ryan at rfk.id.au
Thu Aug 5 08:11:05 EDT 2010


On Thu, 2010-08-05 at 12:58 +0100, Chris Withers wrote:
> Jean-Michel Pichavant wrote:
> > You did not redirect stdin, so it is expected you can still read input 
> > from the console. 
> 
> Okay, so if I definitely wanted no input, what should I pass as the 
> stdin parameter to the POpen constructor?

The cross-platform equivalent of /dev/null:

   Popen(...,stdin=open(os.devnull,"r")...)

> > And it looks like svn is writting the credentials 
> > prompt on stderr.
> 
> ...which, as you can see from the code I posted, is piped to STDOUT, 
> which is then PIPE'd through to the calling python so that 
> communicate()'s return value will contain the output.
> 
> As I explained, I can't reproduce this by replacing svn with a simple 
> python script that writes to stderr. So, what is svn doing?

Many programs prompt for auth credentials on the controlling tty instead
of standard input/output.  I believe SSH also does this, which suggests
that it's considered more secure.  No idea why, but I trust the authors
of SSH to know their stuff in this regard.


  Cheers,

     Ryan
-- 
Ryan Kelly
http://www.rfk.id.au  |  This message is digitally signed. Please visit
ryan at rfk.id.au        |  http://www.rfk.id.au/ramblings/gpg/ for details





More information about the Python-list mailing list