From 0a753b340eba9dea0dafb2b4ddf31eb7407f2308 Mon Sep 17 00:00:00 2001
From: Sergey
Date: Sat, 16 May 2026 16:30:56 +0700
Subject: [PATCH] =?UTF-8?q?feat:=20=D1=81=D1=82=D0=B0=D1=80=D1=82=D0=BE?=
=?UTF-8?q?=D0=B2=D0=BE=D0=B5=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?=
=?UTF-8?q?=D0=B8=D0=B5=20=D1=81=D0=BE=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA?=
=?UTF-8?q?=D0=BE=D0=BC=20IP=20=D0=B8=20system=20identity?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
monitor.py | 41 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
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: