Pexpect question.

Jorgen Grahn grahn+nntp at snipabacken.se
Sun Mar 30 17:39:46 EDT 2008


On Fri, 28 Mar 2008 08:12:36 -0700 (PDT), Paul Lemelle <pdl5000 at yahoo.com> wrote:
> I am trying separate a script that users pexpect into
> various functions within the same expect session.  The
> problem is that the function does not return control
> back Main.

I do not understand what that sentence means.

> Any insight into this issue would be
> greatly appreciated.  Below is sample code of the
> problem.  

First, what is the purpose of this program?  It seems to be a more
tedious way to get an ssh login to some Unix host.  Ssh can be
configured to do many things; maybe you do not need Python at all?

Second, it will fail as soon as you use the undefined object 'chk'.

Third, if "not return control back Main" means "sshcon() does not
return", then it is by design.  You call go.interact(), which hands
over control to the user until he types an escape sequence. See the
pexpect documentation.

Fourth, sshcon() does not handle the full dialogue ssh can give you.
If you get "are you sure you want to connect" etc, you will hang until
pexpect.TIMEOUT is thrown.

I have reformatted the source code to be more readable:

> import pexpect
>
> def sshcon(host, password):
> 	go = pexpect.spawn ('/usr/bin/ssh -l root %s ' % host)
> 	go.expect ('Password: ')
> 	go.sendline (password)
> 	go.interact()
>
> #get node info for both clusters. 
> C1_node = raw_input("Enter the ip address for node on cluster 1: ")
> C1_pass = raw_input("Enter the password for the node on cluster 1: ")
>
> sshcon(C1_node, C1_pass)
>
> #go to the path
> chk.expect('# ')
> chk.sendline('ls')
>
> chk.interact()

/Jorgen

-- 
  // Jorgen Grahn <grahn@        Ph'nglui mglw'nafh Cthulhu
\X/     snipabacken.se>          R'lyeh wgah'nagl fhtagn!



More information about the Python-list mailing list