pxsh输出未正确返回特定长度的命令

2024-04-18 23:07:37 发布

您现在位置:Python中文网/ 问答频道 /正文

使用pxpect(Python 3-v4.6.0,Python 2-v4.2.1)中的pxsh执行命令时,不会返回命令的输出,只返回命令本身和控制字符(下面的示例)。 这仅在使用具有特定长度的命令时发生,例如,当将窗口大小设置为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'

有人知道是什么引起的吗?你知道吗


Tags: 命令示例shnotconnpromptsnipcommand
1条回答
网友
1楼 · 发布于 2024-04-18 23:07:37

以防将来有人遇到这个问题。当length=window size-length-of-prompt的命令导致额外的提示错误地插入到传入数据中,进而导致输出错误地返回时,就会发生此问题。你知道吗

有关详细信息,请参见:https://github.com/pexpect/pexpect/issues/552

相关问题 更多 >