fix: стартовое сообщение после подключения к MikroTik

This commit is contained in:
2026-05-16 16:52:27 +07:00
parent 0a753b340e
commit 152334434c
+17 -30
View File
@@ -181,36 +181,7 @@ def main() -> None:
failure_count: dict[str, int] = {} failure_count: dict[str, int] = {}
host_down: dict[str, bool] = {} host_down: dict[str, bool] = {}
# Подключаемся один раз для стартового сообщения startup_notified = False
startup_identity = MIKROTIK_HOST
startup_ip_list = []
try:
_pool = routeros_api.RouterOsApiPool(
MIKROTIK_HOST,
username=MIKROTIK_USER,
password=MIKROTIK_PASSWORD,
port=MIKROTIK_PORT,
plaintext_login=True,
)
_api = _pool.get_api()
startup_identity = fetch_identity(_api)
startup_ip_list = fetch_address_list(_api)
_pool.disconnect()
except Exception as exc:
log.warning("Не удалось получить данные для стартового сообщения: %s", exc)
ip_lines = "\n".join(f" • <code>{ip}</code>" for ip in startup_ip_list) or " (список пуст)"
notify(
f"🟢 <b>MikroTik Monitor запущен</b>\n"
f"\n"
f"🔧 Роутер: <b>{startup_identity}</b> (<code>{MIKROTIK_HOST}</code>)\n"
f"📋 Address-list: <code>{ADDRESS_LIST_NAME}</code>\n"
f"\n"
f"<b>Мониторинг адресов:</b>\n{ip_lines}\n"
f"\n"
f"⏱ Интервал: {CHECK_INTERVAL} сек"
)
while True: while True:
pool = None pool = None
@@ -229,6 +200,22 @@ def main() -> None:
# Читаем актуальный список адресов с MikroTik # Читаем актуальный список адресов с MikroTik
ip_list = fetch_address_list(api) ip_list = fetch_address_list(api)
# Стартовое сообщение — отправляем только после успешного подключения
if not startup_notified:
identity = fetch_identity(api)
ip_lines = "\n".join(f" • <code>{ip}</code>" for ip in ip_list) or " (список пуст)"
notify(
f"🟢 <b>MikroTik Monitor запущен</b>\n"
f"\n"
f"🔧 Роутер: <b>{identity}</b> (<code>{MIKROTIK_HOST}</code>)\n"
f"📋 Address-list: <code>{ADDRESS_LIST_NAME}</code>\n"
f"\n"
f"<b>Мониторинг адресов:</b>\n{ip_lines}\n"
f"\n"
f"⏱ Интервал: {CHECK_INTERVAL} сек"
)
startup_notified = True
if not ip_list: if not ip_list:
log.warning("Address-list '%s' пуст или не найден!", ADDRESS_LIST_NAME) log.warning("Address-list '%s' пуст или не найден!", ADDRESS_LIST_NAME)
else: else: