Исправь данную ошибку "Не удалось получить список с http://192.168.104.11:8081: timed out
Не удалось получить список с http://192.168.104.11:8081: timed out
Пост 104: Nova=-1, Apvgk=0" при данной ситуации нужно выводить что логи не скачались
Добавь пост 133 Кукабой http://192.168.133.11:8081/
Добавь окно вывода отчета, отчет должен быть строго оформлен таким образом "Отчет за 31.05.2026
🔴 Оффлайн: 1
⚠️ Инциденты : 0
✅ Штатно: 18
🔴 НЕТ ДОСТУПА
▪️ 101 – Осенево
🟢 ШТАТНЫЙ РЕЖИМ
▪️ 102 ЮЗОД — Нарушений за 31.05.2026: 76
▪️ 103 Курба — Нарушений за 31.05.2026: 16
▪️ 104 Белогостицы — Нарушений за 31.05.2026: 7
▪️ 115 Охотино (Мышкин) — Нарушений за 31.05.2026: 6
▪️ 116 Рождествено — Нарушений за 31.05.2026: 4
▪️ 117 Родионово — Нарушений за 31.05.2026: 1
▪️ 118 Брейтово — Нарушений за 31.05.2026: -
▪️ 119 Пошехонье — Нарушений за 31.05.2026: 16
▪️ 120 Улейма — Нарушений за 31.05.2026: 2
▪️ 122 Рождественное — Нарушений за 31.05.2026: 56
▪️ 124 Семеновское — Нарушений за 31.05.2026: -
▪️ 125 Киндяки — Нарушений за 31.05.2026: 4
▪️ 126 Углич — Нарушений за 31.05.2026: 17
▪️ 127 Вятское — Нарушений за 31.05.2026: 2
▪️ 128 Шулец — Нарушений за 31.05.2026: 9
▪️ 129 Кабатово — Нарушений за 31.05.2026: 1
▪️ 130 Рязанцево — Нарушений за 31.05.2026: 5
▪️ 131 Нагорье — Нарушений за 31.05.2026: 2"
все панели паттерна убери тоже
Названия постов
"102": "Осенево",
"103": "ЮЗОД",
"104": "Курба",
"115": "Охотино (Мышкин)",
"116": "Рождествено",
"117": "Родионово",
"118": "Брейтово",
"119": "Пошехонье",
"120": "Улейма",
"122": "Рождественное",
"124": "Семеновское",
"125": "Киндяки",
"126": "Углич",
"127": "Вятское",
"128": "Шулец",
"129": "Кабатово",
"130": "Рязанцево",
"131": "Нагорье",
"133": "Кукабой",
Адреса постов для скачивания
"http://192.168.102.11:8081",
"http://192.168.103.11:8081",
"http://192.168.104.11:8081",
"http://192.168.115.11:8081",
"http://192.168.116.11:8081",
"http://192.168.117.11:8081",
"http://192.168.118.11:8081",
"http://192.168.119.11:8081",
"http://192.168.120.11:8081",
"http://192.168.122.11:8081",
"http://192.168.124.11:8081",
"http://192.168.125.11:8081",
"http://192.168.126.11:8081",
"http://192.168.127.11:8081",
"http://192.168.128.11:8081",
"http://192.168.129.11:8081",
"http://192.168.130.11:8081",
"http://192.168.131.11:8081",
"http://192.168.133.11:8081",
imtf-nova.{date}.0.log
если заданного лога нет, проверяем не превышает ли дата искомого лога на 2 дня, дату сегодняшнего дня, если нет, то скачиваем лог imtf-nova.log при скачивание данного лога делать пометку о скачивание действующего лога
imtf-apvgk.{date}.0.log
imtf-apvgk.{date}.0.log
если заданного лога нет, проверяем не превышает ли дата искомого лога на 2 дня, дату сегодняшнего дня, если нет, то скачиваем лог imtf-apvgk.log при скачивание данного лога делать пометку о скачивание действующего лога
Playing event Event(connection=192.168.&&&.31
Playing event Event(connection=192.168.&&&.32
Необходимо подсчитать и вывести количество данных событий по отдельности, а также общую сумму данных событий.
import re
def parse_log(file_path):
count_31 = 0
count_32 = 0
# Регулярное выражение для точного выделения IP
# Группируем последний октет (31 или 32)
pattern = re.compile(r'Playing event Event\(connection=192\.168\.\d+\.(31|32)')
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
match = pattern.search(line)
if match:
if match.group(1) == '31':
count_31 += 1
elif match.group(1) == '32':
count_32 += 1
total = count_31 + count_32
print(f"События с IP *.31: {count_31}")
print(f"События с IP *.32: {count_32}")
print(f"Общее количество событий: {total}")
Необходимо подсчитать и вывести количество данных событий по отдельности, а также общую сумму данных событий.
import re
def parse_log(file_path):
scenario_cnt = 0
ip31_cnt = 0
ip32_cnt = 0
scenario_re = re.compile(r"Scenario '.+?' matched")
target_re = re.compile(r"Target connection 'NOVA\[(\d+\.\d+\.\d+\.\d+):\d+\]'")
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
if scenario_re.search(line):
scenario_cnt += 1
match = target_re.search(line)
if match:
ip = match.group(1)
if ip.endswith('.31'):
ip31_cnt += 1
elif ip.endswith('.32'):
ip32_cnt += 1
print(f"Scenario ... matched: {scenario_cnt}")
print(f"Target connection с IP *.31: {ip31_cnt}")
print(f"Target connection с IP *.32: {ip32_cnt}")
Нужно сравнивать значения print(f"Scenario ... matched: {scenario_cnt}") и print(f"Общее количество событий: {total}") при равном значение помечать "исправно" и создавать переменую для каждого поста ,в которую нужно записать данное значение , если print(f"Scenario ... matched: {scenario_cnt}") больше помечать "инцидент" и выводить обе переменные.
Если только в логе imtf-nova.log обнаружено значение ошибки или дисконекта с устройствам добавлять комментарий "обнаружена ошибка" или "ТПИ не на связи"
Пример как должен выглядеть оформленный конечный отчет сохраняемый в отдельном файле .
Отчет за 30.05.2026
🔴 Оффлайн: 1
⚠️ Инциденты : 1
✅ Штатно: 17
⚠️ ИНЦИДЕНТЫ
🔸 119 Пошехонье
Причина: ТПИ 2 один кабинет не на связи
Нарушений за 30.05.2026: 14
🔴 НЕТ ДОСТУПА
▪️ 101 – Осенево
🟢 ШТАТНЫЙ РЕЖИМ
▪️ 102 ЮЗОД — Нарушений за 30.05.2026: 71
▪️ 104 Белогостицы — Нарушений за 30.05.2026: 6 (Нет подключения к камерам)
▪️ 103 Курба — Нарушений за 30.05.2026: 40
▪️ 115 Охотино (Мышкин) — Нарушений за 30.05.2026: 7
▪️ 116 Рождествено — Нарушений за 30.05.2026: 2
▪️ 117 Родионово — Нарушений за 30.05.2026: -
▪️ 118 Брейтово — Нарушений за 30.05.2026: 2
▪️ 120 Улейма — Нарушений за 30.05.2026: -
▪️ 122 Рождественное — Нарушений за 30.05.2026: 67
▪️ 124 Семеновское — Нарушений за 30.05.2026: -
▪️ 125 Киндяки — Нарушений за 30.05.2026: 4
▪️ 126 Углич — Нарушений за 30.05.2026: 17
▪️ 127 Вятское — Нарушений за 30.05.2026: 11
▪️ 128 Шулец — Нарушений за 30.05.2026: 6
▪️ 129 Кабатово — Нарушений за 30.05.2026: 2
▪️ 130 Рязанцево — Нарушений за 30.05.2026: 12
▪️ 131 Нагорье — Нарушений за 30.05.2026: 1
102: Осенево
103: ЮЗОД
104": "Курба",
115": "Охотино (Мышкин)",
116": "Рождествено",
117": "Родионово",
118": "Брейтово",
119": "Пошехонье",
120": "Улейма",
122": "Рождественное",
124": "Семеновское",
125": "Киндяки",
126": "Углич",
127": "Вятское",
128": "Шулец",
129": "Кабатово",
130": "Рязанцево",
131": "Нагорье",
133": "Кукабой",
items=1
Scenario 'Name:
Playing event Event(connection=192.168.118.31
| Пост | Общие количество событий | Направление 1 | Направление 2 |
|---|---|---|---|
| 102: Осенево |
109 | 69 | 40 |
| 103: ЮЗОД | 16 | 7 | 9 |
| 104": "Курба", |
13 | 6 | 7 |
| 115": "Охотино (Мышкин)", |
5 | 1 | 4 |
| 116": "Рождествено", |
0 | 0 | 0 |
| 117": "Родионово", |
2 | 2 | 0 |
| 118": "Брейтово", |
5 | 5 | 0 |
| 119": "Пошехонье", |
10 | 3 | 7 |
| 120": "Улейма", |
5 | 5 | 0 |
| 122": "Рождественное", |
не доступен | не доступен | не доступен |
| 124": "Семеновское", |
0 | 0 | 0 |
| 125": "Киндяки", |
6 | 2 | 4 |
| 126": "Углич", |
17 | 8 | 9 |
| 127": "Вятское", |
9 | 4 | 5 |
| 128": "Шулец", |
13 | 4 | 9 |
| 129": "Кабатово", |
1 | 1 | 0 |
| 130": "Рязанцево", |
5 | 3 | 2 |
| 131": "Нагорье", |
не доступен | не доступен | не доступен |
| 133": "Кукабой", | 1 | 1 | 0 |
Перениси пост 116 в инцеденты с коментарием 1 ТПИ не работает
Отчет обновлен: пост 116 «Рождествено» перенесен в инциденты с комментарием.
На основе данного описания составь правильную логику работы программы
| ID | Название | Доступ | Поле5 | Поле6 | Состояние | Поле9 | Поле10 | Проверка |
|---|---|---|---|---|---|---|---|---|
| 102 | Осенево | ДА | 112 | 112 | ШТАТНО | 63 | 49 | + |
| 103 | ЮЗОД | ДА | 17 | 17 | ШТАТНО | 10 | 7 | + |
| 104 | Курба | ДА | 11 | 11 | ШТАТНО | 4 | 7 | + |
| 115 | Охотино (Мышкин) | ДА | 8 | 8 | ШТАТНО (текущий лог) | 5 | 3 | + |
| 116 | Рождествено | ДА | 3 | 3 | ШТАТНО (текущий лог) | 1 | 2 | + |
| 117 | Родионово | ДА | 5 | 5 | ШТАТНО (текущий лог) | 2 | 3 | + |
| 118 | Брейтово | ДА | 5 | 5 | ШТАТНО | 4 | 1 | + |
| 119 | Пошехонье | ДА | 13 | 13 | ШТАТНО | 4 | 9 | + |
| 120 | Улейма | ДА | 5 | 5 | ШТАТНО | 4 | 1 | + |
| 122 | Рождественное | НЕТ ДОСТУПА | — | — | — | — | — | |
| 124 | Семеновское | ДА | 1 | 1 | ШТАТНО (текущий лог) | 1 | 0 | +- |
| 125 | Киндяки | ДА | 24 | 12 | НЕКОРЕКТНАЯ РАБОТА. РУЧНАЯ ПРОВЕРКА | 0 | 0 | - |
| 126 | Углич | ДА | 24 | 12 | НЕКОРЕКТНАЯ РАБОТА | 0 | 0 | - |
| 127 | Вятское | ДА | 3 | 3 | ШТАТНО (текущий лог) | 0 | 3 | + |
| 128 | Шулец | ДА | 19 | 19 | ШТАТНО | 8 | 11 | + |
| 129 | Кабатово | ДА | 2 | 2 | ШТАТНО (текущий лог) | 1 | 1 | + |
| 130 | Рязанцево | ДА | 3 | 3 | ШТАТНО | 2 | 1 | + |
| 131 | Нагорье | ДА | 1 | 1 | ШТАТНО (текущий лог) | 1= | 0 | +- |
| 133 | Кукабой | ДА | 0 | 0 | ШТАТНО (текущий лог) | 0 | 0 | + |
Отчет за 03.06.2026
🔴 Оффлайн: 1
⚠️ Инциденты: 0
✅ Штатно: 19
🔴 НЕТ ДОСТУПА
▪️ 122 Рождественное
⚠️ ИНЦИДЕНТЫ
🟢 ШТАТНЫЙ РЕЖИМ
▪️ 102 Осенево — Нарушений за 03.06.2026 - 112 (Направление 1 - 63 Направление 2 - 49)
▪️ 103 ЮЗОД — Нарушений за 03.06.2026 - 17 (Направление 1 - 10 Направление 2 - 7)
▪️ 104 Курба — Нарушений за 03.06.2026 - 11 (Направление 1 - 4 Направление 2 - 7)
▪️ 115 Охотино (Мышкин) — Нарушений за 03.06.2026 - 8 (Направление 1 - 5 Направление 2 - 3)
▪️ 116 Рождествено — Нарушений за 03.06.2026 - 3 (Направление 1 - 1 Направление 2 - 2)
▪️ 117 Родионово — Нарушений за 03.06.2026 - 5 (Направление 1 - 2 Направление 2 - 3)
▪️ 118 Брейтово — Нарушений за 03.06.2026 - 5 (Направление 1 - 4 Направление 2 - 1)
▪️ 119 Пошехонье — Нарушений за 03.06.2026 - 13 (Направление 1 - 4 Направление 2 - 9)
▪️ 120 Улейма — Нарушений за 03.06.2026 - 5 (Направление 1 - 4 Направление 2 - 1)
==▪️ 124 Семеновское — Нарушений за 03.06.2026 - 1 (Направление 1 - 0 Направление 2 - 0)
▪️ 125 Киндяки — Нарушений за 03.06.2026 - 12 (Направление 1 - 2 Направление 2 - 10)
▪️ 126 Углич — Нарушений за 03.06.2026 - 12 (Направление 1 - 7 Направление 2 - 5)
==▪️ 127 Вятское — Нарушений за 03.06.2026 - 3 (Направление 1 - 0 Направление 2 - 0)
▪️ 128 Шулец — Нарушений за 03.06.2026 - 19 (Направление 1 - 8 Направление 2 - 11)
▪️ 129 Кабатово — Нарушений за 03.06.2026 - 2 (Направление 1 - 1 Направление 2 - 1)
▪️ 130 Рязанцево — Нарушений за 03.06.2026 - 3 (Направление 1 - 2 Направление 2 - 1)
==▪️ 131 Нагорье — Нарушений за 03.06.2026 - 0 (Направление 1 - 0 Направление 2 - 0)
▪️ 133 Кукабой — Нарушений за 03.06.2026 - 0 (Направление 1 - 0 Направление 2 - 0)
102 ЮЗОД — Нарушений за 04.06.2026: 89 (Направление 1 - 56 Направление 2 - 33)
103 Курба — Нарушений за 04.06.2026: 28 (Направление 1 - 3 Направление 2 - 25)
104 Белогостицы — Нарушений за 04.06.2026: 9 (Направление 1 - 5 Направление 2 - 4)
115 Охотино (Мышкин) — Нарушений за 04.06.2026: 9 (Направление 1 - 6 Направление 2 - 3)
116 Рождествено — Нарушений за 04.06.2026: 1 (Направление 1 - 1 Направление 2 - 0)
117 Родионово — Нарушений за 04.06.2026: 2 (Направление 1 - 0 Направление 2 - 2)
118 Брейтово — Нарушений за 04.06.2026: 5 (Направление 1 - 4 Направление 2 - 1)
119 Пошехонье — Нарушений за 04.06.2026: 10 (Направление 1 - 3 Направление 2 - 7)
120 Улейма — Нарушений за 04.06.2026: 9 (Направление 1 - 9 Направление 2 - 0)
122 Рождественное — Нарушений за 04.06.2026: 0 (Направление 1 - 0 Направление 2 - 0)
124 Семеновское — Нарушений за 04.06.2026: 1 (Направление 1 - 0 Направление 2 - 1)
125 Киндяки — Нарушений за 04.06.2026: 2 (Направление 1 - 1 Направление 2 - 1)
126 Углич — Нарушений за 04.06.2026: 21 (Направление 1 - 8 Направление 2 - 13)
127 Вятское — Нарушений за 04.06.2026: 0 (Направление 1 - 0 Направление 2 - 0)
128 Шулец — Нарушений за 04.06.2026: 13 (Направление 1 - 10 Направление 2 - 3)
129 Кабатово — Нарушений за 04.06.2026: 1 (Направление 1 - 0 Направление 2 - 1)
130 Рязанцево — Нарушений за 04.06.2026: 8 (Направление 1 - 5 Направление 2 - 3)
131 Нагорье — Нарушений за 04.06.2026: 2 (Направление 1 - 2 Направление 2 - 0)