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