Pexpect question.

Paul Lemelle Plemelle at comcast.net
Wed Apr 2 21:57:31 EDT 2008


Jorgen,

Thanks for your reply. 

The ssh function is just a small part of what I would like to
accomplish.  And yes, chk is undefined, I was trying to figure out why
control was not being returned from the sshcon funciton. 

I looked for pexpect doucment on http://www.noah.org/wiki/Pexpect, but
the documentaiton link appear to be broken. Could you recommend
another site?

Thanks,
Paul


On 30 Mar 2008 21:39:46 GMT, Jorgen Grahn <grahn+nntp at snipabacken.se>
wrote:

>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




More information about the Python-list mailing list