I am trying to read the output of pexpect.send(cmd) but here's the problem I am facing.
I am sending many commands in a sequence and I want to read/expect after a certain set of commands. Condition is that only the output of last command is to be considered. But expect
matches from the point it last read. I have tried different methods such as matching for an EOF before sending the command of which I need the output but EOF means that child has terminated. I have tried reading till timeout and then sending the command but timeout itself causes the child to terminate.
I have looked for ways in which I could read from the end or the last line of output. I am considering reading a fixed bytes to a file or string and then manipulate the output to get the info I want. Here as well the fixed number of bytes is not fixed. There does not seems to be a reliable way to do this.
Could anyone help me sort this out ?
There are three ways in which this problem can be handled but none to flush the buffer
send
call should be matched with a call to expect
. This ensures that the file pointer has moved ahead of the previous send. send
before a single expect
then we need to provide a way to move file pointer to the location of last send. This can be done by an extra send
whose expect
output is unique. The uniqueness should be such that none of the send
in the series of send
should give that output. logfile_read
to a file. All the output will be logged to this file. Before the send
for which the expect
is used, get the position of file pointer. Now get the position of file pointer after the send as well. Search for expected pattern in the file in between first and second pointer. First method is the ideal way it should be done.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.