[英]pxssh - Output not returning correctly with certain length command
当使用来自pexpect的pxssh(Python 3-v4.6.0,Python 2-v4.2.1)执行命令时,不返回命令的输出,仅返回命令本身以及控制字符(下面的示例)。 仅在使用具有特定长度的命令时才会发生这种情况,例如,当将窗口大小设置为200时,对于窗口大小为300的命令,长度为189个字符的命令将触发此行为,对于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'
有谁知道这可能是什么原因?
万一将来有人遇到这个问题。 当一个命令的长度=窗口大小-提示长度时,就会发生此问题,这会导致一个附加提示被错误地插入到传入数据中,进而导致输出被错误地返回。
有关更多信息,请参见: https : //github.com/pexpect/pexpect/issues/552
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.