pexpect响应包括<cr> </cr>的请求回声

时间:2012-11-01 13:05:41

标签: shell python-2.7 pexpect

我之前使用过pexpectsendline,但这次我使用管道外卡运行更长的命令,请参阅下文:

commandToRun='/bin/bash -c "/var/scripts/testscripts//extract -o | tail -3"'
returnedString = sendLine(commandToRun)

我的具有sendLine功能的类看起来非常像这样:

    self.connection = pexpect.spawn('%s %s' % (protocol, host))
    self.connection.setecho(False)
    self.connection.setwinsize(300, 300)

但是当我运行代码时,我发现returnedString不仅包括响应,还包括请求。

因此,如果我打印returnedString,它看起来像这样:

bin/bash -c "/var/scripts/testscripts//extract -o | tail -3"<cr>
100<cr>
102<cr>
103<cr>

为什么响应在同一缓冲区中包含请求? 我已经设置setecho(False)但它没有帮助!

编辑:(正确修复)我必须手动从响应中删除所有内容并删除请求。所以setecho(False)仍然无能为力!

1 个答案:

答案 0 :(得分:1)

我自己找到了解决方案。 (关闭回声)

commandToRun = 'bash -c "less /readfile | tail -4"'
yourConnection.sendLine("stty -echo")
commandResult = yourConnection.sendLine(commandToRun)
self.sendLine("stty echo")

所以基本上,使用“bash -c”在shell中运行命令,然后在bash中转换echo