pxssh - вывод не вернётся правильно с определенной командой длины - PullRequest
0 голосов
/ 02 января 2019

При использовании pxssh из pexpect (Python 3-v4.6.0, Python 2-v4.2.1) для выполнения команды выходные данные команды не возвращаются, только сама команда вместе с управляющим символом (пример ниже) , Это происходит только при использовании команды определенной длины, например, при установке размера окна на 200, команда длиной 189 символов будет запускать такое поведение, для размера окна 300, команды из 246 символов и т. Д.

Пример кода с соответствующими выходами:

Установка:

from pexpect import pxssh
conn = pxssh.pxssh()
conn.login(host, user, password)
conn.setwinsize(500, 200)
conn.setecho(False)
conn.sendline('')
conn.prompt(1)
conn.prompt(1)

Правильный ожидаемый результат:

conn.sendline('l'*188)
conn.prompt(1)
conn.before
b'llll**snip**lllll\x1b[Kl\r\n-sh: lllll*snip*lllll: command not found\r\n'

Неверный вывод:

conn.sendline('l'*189)
conn.prompt(1)
conn.before
b'lllll**snip**lllll\r\x1b[A'

Правильный ожидаемый результат:

conn.sendline('l'*190)
conn.prompt(1)
conn.before
b'lllll**snip**llllll\x1b[Kl\r\n-sh: lllll**snip**llllll: command not found\r\n'

Кто-нибудь знает, что может быть причиной этого?

1 Ответ

0 голосов
/ 28 января 2019

На случай, если кто-нибудь столкнется с этой проблемой в будущем.Эта проблема возникает, когда команда длина = размер окна - длина подсказки, которая приводит к неправильной вставке дополнительной подсказки во входящие данные, что приводит к неправильному возвращению вывода.

Для получения дополнительной информации см .: https://github.com/pexpect/pexpect/issues/552

...