SCP no funciona en Pexpect

SCP no funciona en Pexpect

Estoy intentando realizar SCP y copiar algunos archivos del servidor remoto. Como no tengo permiso de root, uso sudo con el comando cuando solicita la contraseña. La envío usando pexpect pero no puedo hacerlo. Me golpearon en alguna parte.

Aquí está mi código:

import pexpect

def doScp(user,password,host,remotepath,localpath,files):
    print files

    child = pexpect.spawn('sudo scp -C %s:%s%s %s' % (host, remotepath, files, localpath))

    print 'scp -C %s:%s%s %s' % (host, remotepath, files, localpath)

    i = child.expect(['assword:', r"yes/no"], timeout=30)

    if i == 0:
        child.sendline(password)
    elif i == 1:
        child.sendline("yes")
        child.expect("assword:", timeout=30)
        child.sendline(password)
    data = child.read()
    print data
    child.close()

user = "xxxxx"

host = "yyyy"

password = "zzzzzz"
remotepath = "/opt/logs/"
localpath = "/opt/Performance_Logs/SRNG/"
files = "receiver.log"

doScp(user,password,host,remotepath,localpath,files)

El error que recibo:

Archivo "/usr/lib/python2.6/site-packages/pexpect.py", línea 1325, en expect_list devuelve self.expect_loop(searcher_re(pattern_list), timeout, searchwindowsize) Archivo "/usr/lib/python2.6/ site-packages/pexpect.py", línea 1409, en expect_loop aumenta TIMEOUT (str(e) + '\n' + str(self))

Respuesta1

Prueba así:

child.expect("ada@ada's password:")
child.sendline("mypassword")
child.expect(pexpect.EOF, timeout=10)

¿Podría este enlace ayudarte?

https://github.com/pexpect/pexpect/issues/105

información relacionada