@TSerge
есть консольная программа, например, traceroute или подобная другая, которая периодически (раз в секунду) выдаёт в консоль , текстовый вывод, выходные данные. В течении n секунд, например, 10 сек, потом завершается. Есть необходимость раз в секунду делать как-бы «снимок» её выходных данных, к примеру, на коноль выдаются результаты:
1 1.2.3.4 — 40 ms
2 10.11.22.33 — 50 ms
3 44.44.33.55 — 3 ms
периодичеки данные меняются, или
download: 30 mbit/s
download: 10 mbit/s
download: 100 mbit/s
где, в строке с download можно/нужно получать полезные данные о скорости, опять же к примеру.
Подкажите, как правильнее или какие есть способы периодичекого опроса, захвата выводимой текстовой информации от внешней программы и завершение по окончании работы этой программы?
Может есть какие-то модули для python?
Спасибо.
Решения вопроса 0
Ответы на вопрос 1
@alexzav2
вот когда-то пробовал:
#from time import sleep, time
import time
from datetime import datetime
import subprocess
ip_test="192.168.0.1"
name_file="logsss.txt"
sleep = 3
# -----------------------------------------
def get_cmd(com=""):
res = subprocess.check_output(com).decode("cp866")
return res
# -----------------------------------------
def text_in_file(str):
global name_file
with open(name_file,'a') as file:
file.write(str+'\n')
#print(' -------------------------------------------')
while True:
time.sleep(sleep)
result = get_cmd('ping ' + ip_test + ' -n 2')
#print(result)
#print(' -----------------------------------------')
if 'Заданный узел недоступен' in result:
s = time.strftime('%H %M %S')+ ' Потери'
print(s)
text_in_file(s)
else:
print(time.strftime('%H %M %S') + ' ok')