Форум сайта python.su
Привет всем… Написал программу, который делает мониторинг сети, если нет соединение, запускает другой скрипт для рестарта модема. Сам код
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Б)
Офлайн
gevorg-xРеализуй это через subprocess.Popen().
Хочу добавить условие, если потерия (LOST) состовляет 60% и больше, сработал else. Как реализовать это?
Офлайн
py.user.nextв примерах не нашел как из статистики выбрать аргумент LOST
Можешь задействовать subprocess.run(), но по subprocess.Popen() ты больше готовых примеров найдёшь.
Отредактировано gevorg-x (Апрель 5, 2022 10:31:01)
Офлайн
Как я понемаю, нужно для начало вывести аргумент как строку?
Офлайн
>>> 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)
Офлайн