pexpect не работает должным образом

Я пытаюсь скопировать некоторые файлы с удаленного сервера на мою машину. Я использую spawn в pexpect для аутентификации при запросе. Я частично успешно загрузил файл с сервера. Проблема заключается в том, что перед завершением загрузки выдается исключение " ETAException pexpect.ExceptionPexpect: ExceptionPexpect() in > ignored"

Ниже мой код:

def doScp(user,password,host,remotepath,localpath,files):
try:
    print files
    child = pexpect.spawn('sudo scp -C %s:%s%s %s' % (host, remotepath, files, localpath))
    child.logfile = sys.stdout
    print 'scp -C %s:%s%s %s' % (host, remotepath, files, localpath)
    i = child.expect(['assword', r"yes/no"], timeout=20)
    if i == 0:
        print "Value of I is Zero\n"
        child.sendline(password)
        j = child.expect(['yes/no'],timeout=20)
        if j == 0:
            child.sendline("yes")
        child.expect(pexpect.EOF, timeout=None)
    elif i == 1:
        child.sendline("yes")
        child.expect("assword", timeout=20)
        child.sendline(password)
        child.expect(pexpect.EOF, timeout=None)
    child.interact()
except pexpect.ExceptionPexpect, e:
    return False

1 ответ

Я нашел ответ сам. Проблема с таймаутом. Я не дал ни одного таймаута, теперь он работает нормально:) Вот мой код

def doScp(user,password,host,remotepath,localpath,files):
    try:
        print files
        child = pexpect.spawn('sudo scp -C %s:%s%s %s' % (
                              host, remotepath, files, localpath))
        child.logfile = sys.stdout
        print 'scp -C %s:%s%s %s' % (host, remotepath, files, localpath)
        i = child.expect(['assword', r"yes/no"], timeout=None)
        if i == 0:
            print "Value of I is Zero\n"
            child.sendline(password)
            j = child.expect(['yes/no'],timeout=None)
            if j == 0:
                child.sendline("yes")
            child.expect(pexpect.EOF, timeout=None)
        elif i == 1:
            child.sendline("yes")
            child.expect("assword", timeout=None)
            child.sendline(password)
            child.expect(pexpect.EOF, timeout=None)
        child.interact()
    except pexpect.ExceptionPexpect, e:
        return False
Другие вопросы по тегам