child = pexpect.spawn ('/bin/bash')
child.sendline('ls')
print(child.readline())
print child.before, child.after
Tout ce que je reçois avec ce code dans ma sortie est
ls
ls
Mais quand mon code est
child = pexpect.spawn('ls')
print(child.readline())
print child.before, child.after
Ensuite, cela fonctionne, mais uniquement pour les 2 premières impressions. Suis-je en train d'utiliser la mauvaise commande d'envoi? J'ai essayé d'envoyer, d'écrire, d'envoyer des lignes et je n'ai plus pu trouver.
Dans pexpect, les attributs before
et after
sont remplis après une méthode expect
. La chose la plus couramment utilisée dans cette situation est d'attendre l'invite (vous saurez donc que la commande précédente a terminé l'exécution). Donc, dans votre cas, le code pourrait ressembler à ceci:
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)
Essayez ce qui suit:
import pexpect
child = pexpect.spawn('ls')
print child.read() # not readline
La read()
vous donnera la sortie entière du 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(".*\$ ")
allez ouvrir votre fichier journal: - allez au terminal
$gedit /tmp/mylog
import sys
import pexpect
child = pexpect.spawn('ls')
child.logfile = sys.stdout
child.expect(pexpect.EOF)
Je pense que tout ce dont vous avez besoin est:
p = pexpect.spawn('ls')
p.expect(pexpect.EOF)
print(p.before)
ou
p = pexpect.spawn('/bin/ls')
p.expect(pexpect.EOF)
print(p.before)
ou
p = pexpect.spawn('/bin/bash -c "ls"')
p.expect(pexpect.EOF)
print(p.before)
ou même
print(pexpect.run('ls'))
copier à partir de la classe docstring spawn (SpawnBase), peut-être que l'exemple-2 est ce que vous voulez.
Exemple d'entrée et de sortie de journal dans un fichier ::
child = pexpect.spawn('some_command')
fout = open('mylog.txt','wb')
child.logfile = fout
Exemple de journal sur 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