diff --git a/monitor.py b/monitor.py
index e504324..b45f500 100644
--- a/monitor.py
+++ b/monitor.py
@@ -156,6 +156,18 @@ def mikrotik_ping(api, address: str) -> Optional[float]:
return None
+# ──────────────────────────────────────────────
+# MikroTik: получить system identity
+# ──────────────────────────────────────────────
+def fetch_identity(api) -> str:
+ try:
+ resource = api.get_resource("/system/identity")
+ result = resource.get()
+ return result[0].get("name", MIKROTIK_HOST) if result else MIKROTIK_HOST
+ except Exception:
+ return MIKROTIK_HOST
+
+
# ──────────────────────────────────────────────
# Основной цикл
# ──────────────────────────────────────────────
@@ -169,10 +181,35 @@ 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"Address-list: {ADDRESS_LIST_NAME}\n"
- f"Интервал: {CHECK_INTERVAL} сек"
+ 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} сек"
)
while True: