¿Cómo interactuar con la sesión de shell interactiva de Paramiko?

Tengo un código Paramiko en el que utilizo el método invoke_shell para solicitar una sesión de shell ssh interactiva en un servidor remoto. El método se describe aquí: invoke_shell ()

Aquí hay un resumen del código pertinente:

sshClient = paramiko.SSHClient() sshClient.connect('127.0.0.1', username='matt', password='password') channel = sshClient.get_transport().open_session() channel.get_pty() channel.invoke_shell() while True: command = raw_input('$ ') if command == 'exit': break channel.send(command + "\n") while True: if channel.recv_ready(): output = channel.recv(1024) print output else: time.sleep(0.5) if not(channel.recv_ready()): break sshClient.close() 

Mi pregunta es: ¿hay una mejor manera de interactuar con el shell? Lo anterior funciona, pero es feo con las dos indicaciones (matt @ kali: ~ $ y $ from raw_input), como se muestra en la captura de pantalla de una prueba con el shell interactivo. ¿Supongo que necesito ayuda para escribir al stdin para el shell? Lo siento, no código mucho. ¡Gracias por adelantado! introduzca la descripción de la imagen aquí

Importé un archivo, interactive.py, que se encuentra en el GitHub de Paramiko. Después de importarlo, solo tuve que cambiar mi código a esto:

 try: import interactive except ImportError: from . import interactive ... ... channel.invoke_shell() interactive.interactive_shell(channel) sshClient.close() 

Puedes intentar deshabilitar el eco después de invocar el shell remoto:

 channel.invoke_shell() channel.send("stty -echo\n") while True: command = raw_input() # no need for `$ ' anymore ... ...