popen2 + passwd
Donn Cave
donn at u.washington.edu
Mon May 15 18:44:05 EDT 2000
Jp Calderone <exarkun at flashmail.com> wrote:
| Can anyone tell me why this doesn't work?
|
| import popen2
|
| i, o = popen2.popen2('passwd bin')
| pwd = '12345ASD'
| o.write(pwd + '\n')
| o.write(pwd + '\n')
| i.close()
| o.close()
|
| Running it through the interpreter yields no output (as it should),
| but the password for the bin user doesn't change to what I'd expect
| it to (12345ASD), but to something else.
Most versions of the "passwd" program will try to turn off echo on
their input unit. That's a tty device ioctl(), and a pipe device is
not valid for that. When it fails, I would expect the program to abort.
I'd expect to see a password prompt, but not the second password prompt.
There's a special device, called a pseudo-tty, or pty, to use with
applications that need a terminal device. Python's pty module can do
that for a few platforms, and there have been "expect" solutions.
The real Expect is a widely used Tcl application that uses a pty to
interact with an external application.
Donn Cave, donn at u.washington.edu
More information about the Python-list
mailing list