Problem with PEXPECT in Python

2007-06-30 Thread Kevin Erickson
Hello,

I am attempting to use pexpect in python to copy files from a server
using scp; the copy works however exceptions are thrown and it exits
unsuccessfully.  Below is the a sample code and the error:

#Begin Code

import sys
import pexpect

def GetServerData(self):
foo = pexpect.spawn('scp [EMAIL PROTECTED]:/home/config/
role{/file1,/files/file2,/files/file3} /tmp')
foo.expect('.*password:*')
foo.sendline('server_password')
foo.interact()

#End Code

#Begin Output

file1   100%   10KB  10.0KB/s
00:01
file2   100%  946 0.9KB/s
00:00
file3   100% 1655 1.6KB/s
00:00
Traceback (most recent call last):
  File "mygui.py", line 6, in ?
f = Form1()
  File "/home/Kevin/form1.py", line 41, in __init__
self.GetServerData()
  File "/home/Kevin/form1.py", line 84, in GetServerData
foo.interact()
  File "/usr/lib/python2.4/site-packages/pexpect.py", line 1062, in
interact
selfw.__interact_copy(escape_character)
  File "/usr/lib/python2.4/site-packages/pexpect.py", line 1086, in
__interact_copy
data = self.__interact_read(self.child_fd)
  File "/usr/lib/python2.4/site-packages/pexpect.py", line 1075, in
__interact_read
return os.read(fd, 1000)
OSError: [Errno 5] Input/output error

#End Output

The problem seems to be with the call foo.interact(); does anyone know
how to fix this?  Any help will be much appreciated.

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


Re: Problem with PEXPECT in Python

2007-06-30 Thread Kevin Erickson
On Jun 30, 5:50 pm, Kevin  Erickson <[EMAIL PROTECTED]> wrote:
> Hello,
>
> I am attempting to use pexpect in python to copy files from a server
> using scp; the copy works however exceptions are thrown and it exits
> unsuccessfully.  Below is the a sample code and the error:
>
> #Begin Code
>
> import sys
> import pexpect
>
> def GetServerData(self):
> foo = pexpect.spawn('scp [EMAIL PROTECTED]:/home/config/
> role{/file1,/files/file2,/files/file3} /tmp')
> foo.expect('.*password:*')
> foo.sendline('server_password')
> foo.interact()
>
> #End Code
>
> #Begin Output
>
> file1   100%   10KB  10.0KB/s
> 00:01
> file2   100%  946 0.9KB/s
> 00:00
> file3   100% 1655 1.6KB/s
> 00:00
> Traceback (most recent call last):
>   File "mygui.py", line 6, in ?
> f = Form1()
>   File "/home/Kevin/form1.py", line 41, in __init__
> self.GetServerData()
>   File "/home/Kevin/form1.py", line 84, in GetServerData
> foo.interact()
>   File "/usr/lib/python2.4/site-packages/pexpect.py", line 1062, in
> interact
> selfw.__interact_copy(escape_character)
>   File "/usr/lib/python2.4/site-packages/pexpect.py", line 1086, in
> __interact_copy
> data = self.__interact_read(self.child_fd)
>   File "/usr/lib/python2.4/site-packages/pexpect.py", line 1075, in
> __interact_read
> return os.read(fd, 1000)
> OSError: [Errno 5] Input/output error
>
> #End Output
>
> The problem seems to be with the call foo.interact(); does anyone know
> how to fix this?  Any help will be much appreciated.


I have found a work around for my problem.  I replace the following
line:

foo.interact()
with
foo.expect(pexpect.EOF)

That change gets rid of the errors and works great for copying the
files down from the server.

Kevin

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