【问题标题】:How to print out the output of "tar" execution until it finishes using telnetlib?如何在完成使用 telnetlib 之前打印出“tar”执行的输出?
【发布时间】:2014-08-08 08:46:58
【问题描述】:

我尝试在“tar”命令提取文件时打印出来,但我无法打印出进度的输出。

import telnetlib

tn = telnetlib.Telnet("x.x.x.x")

tn.write("tar -xvf a.tar")
print tn.read_until("#")
time.sleep(1800)

上面的代码在执行后打印出所有输出,虽然tar完成不到1800秒,但需要等待。

另一个尝试是

import telnetlib

tn = telnetlib.Telnet("x.x.x.x")

tn.write("tar -xvf a.tar")
print tn.read_eager()

print tn.read_all()

此代码在执行tar 时不打印输出。你能告诉我如何在tar 运行时打印出来,并在它完成tar 执行后立即返回而无需等待?

谢谢。

【问题讨论】:

  • 看起来和缓冲有关
  • time.sleep(1800) 直到 read_until 完成后才会发生,所以它对你没有任何好处。你试图做什么呢?如果我们知道这一点,我们也许可以解释如何去做,而不是试图根据您的尝试进行猜测。 (有关更多信息,请参阅What is the XY problem?,帮助也可能会有所帮助。)

标签: python telnet tar telnetlib


【解决方案1】:

我真的不明白你的第一个脚本有什么问题......无论如何你可以试试这个吗?

tn.write("tar -xvf a.tar")
while True:
    resp = tn.read_until("#", 1.0)
    if 0 == len(resp): break
    print resp
print "done"

循环通过指定超时参数1.0来等待telnet连接变为静默。

【讨论】:

  • 谢谢,这就是我想得到的答案。目前,我正在使用 curl x.x.x.x/a.tar | tar -xf 并想知道 telnet 会话的输出。欣赏!!
猜你喜欢
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多