Saltar al contenido

¿Cómo ejecuta múltiples comandos en una sola sesión en Paramiko? (Pitón)

Recuerda que en las ciencias informáticas cualquier problema casi siempre tiene diversas resoluciones, así que nosotros aquí compartiremos lo más óptimo y eficiente.

Solución:

Casos de uso no interactivos

Esto es un no interactivo ejemplo… envía cd tmp, ls y entonces exit.

import sys
sys.stderr = open('/dev/null')       # Silence silly warnings from paramiko
import paramiko as pm
sys.stderr = sys.__stderr__
import os

class AllowAllKeys(pm.MissingHostKeyPolicy):
    def missing_host_key(self, client, hostname, key):
        return

HOST = '127.0.0.1'
USER = ''
PASSWORD = ''

client = pm.SSHClient()
client.load_system_host_keys()
client.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
client.set_missing_host_key_policy(AllowAllKeys())
client.connect(HOST, username=USER, password=PASSWORD)

channel = client.invoke_shell()
stdin = channel.makefile('wb')
stdout = channel.makefile('rb')

stdin.write('''
cd tmp
ls
exit
''')
print stdout.read()

stdout.close()
stdin.close()
client.close()

Casos de uso interactivos

Si tiene un caso de uso interactivo, esta respuesta no ayudará … Yo personalmente usaría pexpect o exscript para sesiones interactivas.

Estrictamente hablando, no se puede. De acuerdo con la especificación ssh:

Una sesión es una ejecución remota de un programa. El programa puede ser un shell, una aplicación, un comando del sistema o algún subsistema incorporado.

Esto significa que, una vez ejecutado el comando, la sesión finaliza. No puede ejecutar varios comandos en una sesión. Sin embargo, lo que PUEDE hacer es iniciar un shell remoto (== un comando) e interactuar con ese shell a través de stdin, etc. (piense en ejecutar un script de python en lugar de ejecutar el intérprete interactivo)

Intenta crear un comando string separado por n personaje. Funcionó para mí. Para. p.ej ssh.exec_command("command_1 n command_2 n command_3")

Si aceptas, eres capaz de dejar un artículo acerca de qué te ha gustado de este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *