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

2008-01-10 Thread BlackjadeLin
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
import pexpect
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


-- 
http://mail.python.org/mailman/listinfo/python-list


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

2008-01-12 Thread BlackjadeLin
On Jan 11, 1:49 am, Noah <[EMAIL PROTECTED]> wrote:
> On Jan 10, 12:59 am, BlackjadeLin <[EMAIL PROTECTED]> 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

Thank you very much!
The  interact() method complete my achievement.
-- 
http://mail.python.org/mailman/listinfo/python-list