python3 pxssh example python pexpect

pxssh - python pexpect ssh example



Python cómo leer la salida de pexpect child? (6)

child = pexpect.spawn (''/bin/bash'') child.sendline(''ls'') print(child.readline()) print child.before, child.after

Todo lo que obtengo con este código en mi salida es

ls ls

Pero cuando mi código es

child = pexpect.spawn(''ls'') print(child.readline()) print child.before, child.after

Entonces funciona, pero solo para las 2 primeras impresiones. ¿Estoy usando el comando de envío incorrecto? Intenté enviar, escribir, sendline, y no pude encontrar más.


Copie desde la clase documental spawnBase (SpawnBase), tal vez el ejemplo 2 es lo que quiere.

Ejemplo de registro de entrada y salida a un archivo:

child = pexpect.spawn(''some_command'') fout = open(''mylog.txt'',''wb'') child.logfile = fout

Ejemplo de log to stdout ::

# In Python 2: child = pexpect.spawn(''some_command'') child.logfile = sys.stdout # In Python 3, we''ll use the ``encoding`` argument to decode data # from the subprocess and handle it as unicode: child = pexpect.spawn(''some_command'', encoding=''utf-8'') child.logfile = sys.stdout


Creo que todo lo que necesitas es:

p = pexpect.spawn(''ls'') p.expect(pexpect.EOF) print(p.before)

o

p = pexpect.spawn(''/bin/ls'') p.expect(pexpect.EOF) print(p.before)

o

p = pexpect.spawn(''/bin/bash -c "ls"'') p.expect(pexpect.EOF) print(p.before)

o incluso

print(pexpect.run(''ls''))


En pexpect, los atributos de before y after se rellenan después de un método expect . Lo más común que se usa en esta situación es esperar el aviso (para que sepa que el comando anterior terminó de ejecutarse). Entonces, en tu caso, el código podría verse algo como esto:

child = pexpect.spawn (''/bin/bash'') child.expect("Your bash prompt here") child.sendline(''ls'') #If you are using pxssh you can use this #child.prompt() child.expect("Your bash prompt here") print(child.before)


Intenta lo siguiente:

import pexpect child = pexpect.spawn(''ls'') print child.read() # not readline

La read() le dará la salida completa de los ls.


#!/usr/bin/env python import pexpect child = pexpect.spawn("ssh [email protected] -p 2222") child.logfile = open("/tmp/mylog", "w") child.expect(".*assword:") child.send("XXXXXXX/r") child.expect(".*/$ ") child.sendline("ls/r") child.expect(".*/$ ")

Vaya a abrir su archivo de registro: - vaya a la terminal

$gedit /tmp/mylog