pexpect.exitstatus not working?

Laszlo Zsolt Nagy gandalf at geochemsource.com
Thu Sep 1 07:00:09 EDT 2005


Laszlo Zsolt Nagy wrote:

>This function:
>
>def scp(from_path,to_path,pwd):
>    """Copy a file with scp."""
>    cmd = '/bin/csh -c "scp -q %s %s ; echo XXX"' %(from_path,to_path)
>    print cmd
>    child = pexpect.spawn(cmd)
>    child.expect('Password:')
>    child.sendline(pwd)    
>    child.expect('XXX')
>    return child.exitstatus
>
>always returns None. 
>
....

>How can I 
>get the exit status code? Please help me.
>  
>
I could develop a workaround, but this is a real hack, using bourne 
shell and the $? variable.

def scp(from_path,to_path,pwd):
    """Copy a file with scp.
   
    Return the exit code."""
    cmd = '/bin/sh -c "scp -q %s %s ; echo $? ; echo XXX "' 
%(from_path,to_path)
    print cmd
    child = pexpect.spawn(cmd)
    child.expect('Password:')
    child.sendline(pwd)
    child.expect("XXX")
    parts = []
    for item in child.before.split('\n'):
    if item.strip() != "":
        parts.append(item.strip())
    code = int(parts[-1])
    print "exit code:", code
    if (code != 0):
    print parts[0]
    return code

Is there a platform independent solution?

   Les




More information about the Python-list mailing list