Problem with PEXPECT in Python

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Kevin  Erickson

    #1

    Problem with PEXPECT in Python

    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(s elf):
    foo = pexpect.spawn(' scp user@server.com:/home/config/
    role{/file1,/files/file2,/files/file3} /tmp')
    foo.expect('.*p assword:*')
    foo.sendline('s erver_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.GetServerD ata()
    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.__interac t_copy(escape_c haracter)
    File "/usr/lib/python2.4/site-packages/pexpect.py", line 1086, in
    __interact_copy
    data = self.__interact _read(self.chil d_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.

  • Kevin  Erickson

    #2
    Re: Problem with PEXPECT in Python

    On Jun 30, 5:50 pm, Kevin Erickson <kevin.erick... @gmail.comwrote :
    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(s elf):
    foo = pexpect.spawn(' scp u...@server.com :/home/config/
    role{/file1,/files/file2,/files/file3} /tmp')
    foo.expect('.*p assword:*')
    foo.sendline('s erver_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.GetServerD ata()
    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.__interac t_copy(escape_c haracter)
    File "/usr/lib/python2.4/site-packages/pexpect.py", line 1086, in
    __interact_copy
    data = self.__interact _read(self.chil d_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(pexp ect.EOF)

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

    Kevin

    Comment

    Working...