Estoy haciendo un script de Python donde necesito generar varios procesos de ssh-copy-id, y necesitan que escriba una contraseña Así que estoy usando PExpect.Pexpect, ejecutar ssh-copy-id se bloquea cuando intenta generar un segundo proceso
que tienen básicamente la siguiente:
child = pexpect.spawn('command')
child.expect('password:')
child.sendline('the password')
y luego quiero para desovar otro proceso, no me importa acerca de esto nunca más, si se terminó o no.
child = pexpect.spawn('command2')
child.expect('password:')
child.sendline('the password')
Y el código está colgando en la segunda "engendro"
Sin embargo, si comento hacia fuera la primera, la segunda funciona, así que supongo que el hecho de que el primero es sigue corriendo o algo impide que funcione.
Ahora, la otra cosa que no he podido hacer es esperar hasta que se detenga la primera. que he probado:
child.close() - Se cuelga (ambos con verdadero y falso como parámetros) child.read (-1) - Se cuelga
child.expect (pexpect.EOF) - se cuelga.
child.terminate() - se cuelga (ambos con verdadero y falso como parámetros)
¿Alguna idea sobre qué podría estar pasando?
NOTA: No soy un experto en Python, y nunca he usado pexpect antes, por lo que CUALQUIER idea es más que bienvenida.
Gracias!
ACTUALIZACIÓN: Este es, sin duda relacionada con ssh-copy-id, ya que con otros procesos, engendro funciona bien incluso si no vuelven. Además, aparentemente ssh-copy-id nunca devuelve un EOF.
@DanialMagliola ¿Tiene alguna solución perfecta para esto? – Nilesh
Siguiendo los consejos de http://linux.byexamples.com/archives/346/python-how-to-access-ssh-with- pexpect/, funciona para mí agregando '' 'child.expect (pexpect.EOF) '' 'después de enviar la contraseña –