通过SSH写入和读取未缓冲的stdout文件

时间:2014-07-18 17:37:25

标签: python ssh apache-pig pexpect

我使用Node来执行Python脚本。将Python脚本SSH连接到服务器,然后运行Pig作业。我希望能够从Pig作业中获取标准,并在浏览器中显示它。

我使用PExpect库进行SSH调用,但是在完全完成之前不会打印pig调用的输出(至少我写的方式)。关于如何重组它的任何提示?

child.sendline(command)
child.expect(COMMAND_PROMPT)
print(child.before)

我知道我不应该期待命令提示(原因只会在流程结束时显示),但我不确定我应该期待什么。

1 个答案:

答案 0 :(得分:1)

重复我的评论作为答案,因为它解决了这个问题:

如果将child.logfile_read设置为可写文件对象(例如sys.stdout),Pexpect会在读取时将输出转发到那里。

child.logfile_read = sys.stdout
child.sendline(command)
child.expect(COMMAND_PROMPT)