Как сделать периодический забор данных (текстовых) от внешней консольной программы на Python?

День добрый,

есть консольная программа, например, 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?

Спасибо.
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
как вариант написать запуск консольной команды из Python и получать результаты
вот когда-то пробовал:
#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')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы