Antecedentes: Estoy usando python y paramiko para automatizar el proceso que paso cada vez que tengo que entregar un programa para una clase. Usamos un comando llamado "handin" para enviar el código fuente, pero esto debe hacerse desde una computadora escolar. Así que cuando envío el código desde mi casa, tengo que: sftp en los servidores de la escuela, poner los archivos en un directorio, ssh en la computadora de la escuela, usar el comando 'handin'Script Python paramiko, problemas de lectura de salida durante exec_command()
Puedo colocar archivos exitosamente en las máquinas de la escuela. El problema ocurre cuando intento usar exec_command ('handin my files') y luego leo el resultado para determinar la siguiente acción.
así que tienen
try:
(stdin, stdout, stderr) = client.exec_command(s)
except:
print 'whoops'
sys.exit()
print stdout.readlines()
Pero esto provoca un estancamiento por alguna razón, el guión parece estar sin hacer nada y tengo que matar a la larga todo el proceso (Ctrl + C no funciona). No estoy seguro de si exec_command no se está completando correctamente (a pesar de que se está saliendo del bloque try/catch) o si tengo problemas de red o qué.
¿Alguna idea?
actualización:
El problema es con la interacción con el comando handin durante la ejecución. Después de ejecutar el comando, handin puede o no seguir ejecutándose. Si es la primera vez que lo envía, dice éxito, bla, bla, y termina de ejecutarse. Todo está bien. Pero si vuelvo a enviar tengo que autorizar una sobrescritura (stdin.write ('y')) para cada archivo.
TL/DR:
¿Cómo puedo comprobar si un exec_command() todavía se está ejecutando, a la espera para la entrada, y readline() desde la salida estándar en consecuencia?
¿Tiene una solución para TL/DR? Además, ¿cómo puedo saber el texto antes de esperar la entrada, p. @ contraseña ... –