feat: стартовое сообщение со списком IP и system identity
This commit is contained in:
+39
-2
@@ -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" • <code>{ip}</code>" for ip in startup_ip_list) or " (список пуст)"
|
||||
|
||||
notify(
|
||||
f"🟢 <b>MikroTik Monitor запущен</b>\n"
|
||||
f"Address-list: <code>{ADDRESS_LIST_NAME}</code>\n"
|
||||
f"Интервал: {CHECK_INTERVAL} сек"
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user