【问题标题】:Writing and reading stdout unbuffered to a file over SSH通过 SSH 写入和读取无缓冲的标准输出到文件
【发布时间】:2014-07-22 07:31:16
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果您将child.logfile_read 设置为可写的类似文件的对象(例如sys.stdout),Pexpect 将在读取时将输出转发到那里。
  • 这很好用,没想到这么简单。非常感谢。

标签: python ssh apache-pig pexpect


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 2011-05-18
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2013-03-18
    • 2011-07-01
    相关资源
    最近更新 更多