2015-10-29 3 views
0

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

Ниже мой код:

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 

ответ

0

Я нашел ответ самого самому. Проблема связана с таймаутом. Я не дал ни одному из тайм-аутов сейчас его рабочий тон :) Вот мой код

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