我之前使用过pexpect
和sendline
,但这次我使用管道和外卡运行更长的命令,请参阅下文:
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)仍然无能为力!
答案 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
。