def exec_command(self, command, bufsize=-1):
#print "Executing Command: "+command
chan = self._transport.open_session()
chan.exec_command(command)
stdin = chan.makefile('wb', bufsize)
stdout = chan.makefile('rb', bufsize)
stderr = chan.makefile_stderr('rb', bufsize)
return stdin, stdout, stderr
Al ejecutar un comando en paramiko, siempre reinicia la sesión cuando ejecuta exec_command. Quiero poder ejecutar sudo o su y todavía tengo esos privilegios cuando ejecuto otro exec_command. Otro ejemplo sería intentar ejecutar exec_command ("cd /") y luego ejecutar exec_command nuevamente y tenerlo en el directorio raíz. Sé que puedes hacer algo como exec_command ("cd /; ls -l"), pero tengo que hacerlo en llamadas a funciones separadas.¿Cómo se ejecutan varios comandos en una sola sesión en Paramiko? (Python)
Pero esta solución no permite leer la salida del primer comando antes de que todos los comandos hayan finalizado. ¿Estoy en lo cierto? –
esto no funciona porque stdout.read() lee todo el archivo. Es decir, lee el programa que fue "escrito" en la terminal. Este no es el comportamiento previsto. ¿Cómo se lee solo la salida de 'ls' en lugar de todo el programa y la salida de' ls'? –
Estoy con los dos comentarios anteriores ... ¿Alguna forma de leer la salida de un comando antes de que todos los comandos hayan terminado? – dmranck