Форум сайта python.su
0
Привет всем… Написал программу, который делает мониторинг сети, если нет соединение, запускает другой скрипт для рестарта модема. Сам код
import os
import schedule
import time
import pyautogui
def host():
hostname = “10.0.0.21”
response = os.system(“ping ”+hostname+“ -n 1 ”)
if response == 0:
return (host)
else:
os.system(r'c: /watchdog/k.bat'), pyautogui.press('F10')
host()
schedule.every(2).minutes.do(host)
while True:
schedule.run_pending()
time.sleep(1)
Но есть одна проблема: если из 20 покетов хоть один раз пингуется, оператор else не работает. Хочу добавить условие, если потерия (LOST) состовляет 60% и больше, сработал else. Как реализовать это? Заранее спасибо!
Отредактировано gevorg-x (Апрель 4, 2022 15:47:31)
Прикреплённый файлы:
ping.jpg (7,8 KБ)
Офлайн
857
gevorg-xРеализуй это через subprocess.Popen().
Хочу добавить условие, если потерия (LOST) состовляет 60% и больше, сработал else. Как реализовать это?
Офлайн
0
py.user.nextв примерах не нашел как из статистики выбрать аргумент LOST
Можешь задействовать subprocess.run(), но по subprocess.Popen() ты больше готовых примеров найдёшь.
Отредактировано gevorg-x (Апрель 5, 2022 10:31:01)
Офлайн
0
Как я понемаю, нужно для начало вывести аргумент как строку?
Офлайн
857
>>> import subprocess >>> >>> with subprocess.Popen(['cat', 'x'], stderr=subprocess.PIPE) as proc: ... text = proc.stderr.read().decode('utf-8') ... print(text) ... print(text.replace('file', 'object')) ... cat: x: No such file or directory cat: x: No such object or directory >>>
Отредактировано py.user.next (Апрель 5, 2022 12:37:04)
Офлайн