diff --git a/monitor.py b/monitor.py
index b45f500..3e9289d 100644
--- a/monitor.py
+++ b/monitor.py
@@ -181,36 +181,7 @@ def main() -> None:
failure_count: dict[str, int] = {}
host_down: dict[str, bool] = {}
- # Подключаемся один раз для стартового сообщения
- 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" • {ip}" for ip in startup_ip_list) or " (список пуст)"
-
- notify(
- f"🟢 MikroTik Monitor запущен\n"
- f"\n"
- f"🔧 Роутер: {startup_identity} ({MIKROTIK_HOST})\n"
- f"📋 Address-list: {ADDRESS_LIST_NAME}\n"
- f"\n"
- f"Мониторинг адресов:\n{ip_lines}\n"
- f"\n"
- f"⏱ Интервал: {CHECK_INTERVAL} сек"
- )
+ startup_notified = False
while True:
pool = None
@@ -229,6 +200,22 @@ def main() -> None:
# Читаем актуальный список адресов с MikroTik
ip_list = fetch_address_list(api)
+ # Стартовое сообщение — отправляем только после успешного подключения
+ if not startup_notified:
+ identity = fetch_identity(api)
+ ip_lines = "\n".join(f" • {ip}" for ip in ip_list) or " (список пуст)"
+ notify(
+ f"🟢 MikroTik Monitor запущен\n"
+ f"\n"
+ f"🔧 Роутер: {identity} ({MIKROTIK_HOST})\n"
+ f"📋 Address-list: {ADDRESS_LIST_NAME}\n"
+ f"\n"
+ f"Мониторинг адресов:\n{ip_lines}\n"
+ f"\n"
+ f"⏱ Интервал: {CHECK_INTERVAL} сек"
+ )
+ startup_notified = True
+
if not ip_list:
log.warning("Address-list '%s' пуст или не найден!", ADDRESS_LIST_NAME)
else: