paramiko-expect icon indicating copy to clipboard operation
paramiko-expect copied to clipboard

Buffer size for ssh session in paramiko-expect

Open elmb opened this issue 7 years ago • 1 comments

I am using paramiko-expect to send commands to a server. It is working as expected except when there is pagination options in the returned prompt. In that case, the output text is missing the first character in the output of each new page command and sometimes hangs and doesn't see the matching regular expression which was displayed. Putting buffer_size=1 is the only thing that fixes it for me 100%. Even putting the buffer size to 32 shows the same issues again.

That solution is too slow though, is there anything else I can do?

interact = SSHClientInteraction(ssh, timeout=300, display=True, buffer_size=1)  
output = ''
command = "file search activelog /platform/log/certm.log INFO"
not_done = True
interact.send(command)
while not_done:
    interact_index = interact.expect(['.*Press <enter> for 1 line, <space> for one page, or <q> to quit', '.*Search completed'])
    output += interact.current_output_clean
    if interact_index == 0:
        time.sleep(1)
        interact.send(' ')
    else:
        not_done = False
print(output)

ssh.close()

elmb avatar Jul 07 '17 18:07 elmb

I think trying to work with a UI via paramiko-expect, might be a bit tricky, cause of the way those type of application are working.

I would better find a way to not paginate, and read all the data, and work with it.

fruch avatar Sep 28 '17 19:09 fruch