Как распечатать вывод выполнения "tar", пока он не завершит использование telnetlib?

Я попытался распечатать, так как команда '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 исполнение без ожидания?

Спасибо.

1 ответ

Решение

Я не очень понимаю, в чем была ваша проблема с 1-м сценарием... В любом случае вы можете попробовать это?

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

Цикл ожидает, пока соединение telnet замолчает, указав параметр времени ожидания 1.0,

Другие вопросы по тегам