Why my program (using pexpect to switch user) doesn't work well?

Noah noah at noah.org
Thu Jan 10 12:49:57 EST 2008


On Jan 10, 12:59 am, BlackjadeLin <hoo.s... at gmail.com> wrote:
> I'm new to python
> I want to write a simple script to switch user,for example,from user_A
> to user_B.
> This my codes:
>
> #!/usr/bin/python
> importpexpect
> import os
> passwd="user_B"
> child =pexpect.spawn('su user_B')
> child.expect('Password:')
> child.sendline(passwd)
> child.expect('$')
> child.close()
>
> Maybe it's the easiest pexpect program.Sometimes ,it work well,it
> switch to user_B successfully .But after i type the command exit to
> switch back to user_A,execute the python script again,it can't work,do
> nothing or just waiting.Why it have different results?
> Sorry for my poor English,and many thanks to all.
>
> Blackjade

When you call child.close() that will kill the child process.
Possibly you want to use the interact() method.
It is not clear from your message if you want to interact with
the child process as if it were your new shell. If you do,
then take a look at the interact() method.

  #!/usr/bin/python
  importpexpect
  import os
  passwd="user_B"
  child =pexpect.spawn('su user_B')
  child.expect('Password:')
  child.sendline(passwd)
  child.expect('$')
  child.interact()

--
Noah



More information about the Python-list mailing list