Python how to read output from pexpect child?

你说的曾经没有我的故事 提交于 2019-11-28 23:08:19
Catalin Luta

In pexpect the before and after attributes are populated after an expect method. The most common thing used in this situation is waiting for the prompt (so you'll know that the previous command finished execution). So, in your case, the code might look something like this:

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)
mvensky

Try the following:

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

The read() will give you the entire output of the ls.

#!/usr/bin/env python

import pexpect
child = pexpect.spawn("ssh root@172.16.0.120c -p 2222")
child.logfile = open("/tmp/mylog", "w")
child.expect(".*assword:")
child.send("XXXXXXX\r")
child.expect(".*\$ ")
child.sendline("ls\r")
child.expect(".*\$ ")

go to open your logfile:- go to terminal

$gedit /tmp/mylog

I think all you need is:

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

or

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

or

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

or even

print(pexpect.run('ls'))
import sys
import pexpect
child = pexpect.spawn('ls')
child.logfile = sys.stdout
child.expect(pexpect.EOF)

See the manual entry on the subject.

yongxu

copy from class spawn(SpawnBase) docstring, maybe example-2 is what you want.

Example log input and output to a file::

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

Example 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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!