feat: переменная OBJECT_NAME в уведомлениях
This commit is contained in:
+16
-1
@@ -41,6 +41,7 @@ MAX_CHAT_ID = os.getenv("MAX_CHAT_ID", "")
|
||||
MAX_API_URL = os.getenv("MAX_API_URL", "https://platform-api.max.ru")
|
||||
|
||||
ADDRESS_LIST_NAME = os.environ["ADDRESS_LIST_NAME"]
|
||||
OBJECT_NAME = os.getenv("OBJECT_NAME", "") # название объекта/локации
|
||||
CHECK_INTERVAL = int(os.getenv("CHECK_INTERVAL", "60"))
|
||||
PING_COUNT = int(os.getenv("PING_COUNT", "3"))
|
||||
PING_TIMEOUT_MS = int(os.getenv("PING_TIMEOUT_MS", "1000"))
|
||||
@@ -59,6 +60,13 @@ logging.basicConfig(
|
||||
)
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# ──────────────────────────────────────────────
|
||||
# Хелпер: префикс объекта для уведомлений
|
||||
# ──────────────────────────────────────────────
|
||||
def obj_prefix() -> str:
|
||||
return f"🏢 <b>{OBJECT_NAME}</b>\n" if OBJECT_NAME else ""
|
||||
|
||||
|
||||
# ──────────────────────────────────────────────
|
||||
# Глобальное состояние
|
||||
# ──────────────────────────────────────────────
|
||||
@@ -222,7 +230,8 @@ def fmt_label(ip: str) -> str:
|
||||
# ──────────────────────────────────────────────
|
||||
def build_status_report(title: str) -> str:
|
||||
now = datetime.now()
|
||||
lines = [f"<b>{title}</b>", f"🔧 Роутер: <b>{router_identity}</b>", ""]
|
||||
prefix = f"🏢 <b>{OBJECT_NAME}</b>\n" if OBJECT_NAME else ""
|
||||
lines = [f"{prefix}<b>{title}</b>", f"🔧 Роутер: <b>{router_identity}</b>", ""]
|
||||
down = [ip for ip, s in hosts_state.items() if s["status"] == "down"]
|
||||
up = [ip for ip, s in hosts_state.items() if s["status"] == "up"]
|
||||
|
||||
@@ -444,6 +453,7 @@ def main() -> None:
|
||||
if mikrotik_error_notified:
|
||||
mikrotik_error_notified = False
|
||||
notify(
|
||||
f"{obj_prefix()}"
|
||||
f"✅ <b>Подключение к MikroTik восстановлено</b>\n"
|
||||
f"🔧 Роутер: <b>{router_identity}</b> (<code>{MIKROTIK_HOST}</code>)"
|
||||
)
|
||||
@@ -457,6 +467,7 @@ def main() -> None:
|
||||
for ip, comment in ip_list
|
||||
) or " (список пуст)"
|
||||
notify(
|
||||
f"{obj_prefix()}"
|
||||
f"🟢 <b>MikroTik Monitor запущен</b>\n\n"
|
||||
f"🔧 Роутер: <b>{router_identity}</b> (<code>{MIKROTIK_HOST}</code>)\n"
|
||||
f"📋 Address-list: <code>{ADDRESS_LIST_NAME}</code>\n\n"
|
||||
@@ -502,6 +513,7 @@ def main() -> None:
|
||||
dur = fmt_duration(now - ds) if ds else "?"
|
||||
state.update({"status": "up", "down_since": None, "last_notify": None})
|
||||
notify(
|
||||
f"{obj_prefix()}"
|
||||
f"✅ <b>Хост восстановился</b>\n"
|
||||
f"IP: <code>{ip}</code>" + (f" ({comment})" if comment else "") + "\n"
|
||||
f"RTT: {rtt:.1f} ms\n"
|
||||
@@ -518,6 +530,7 @@ def main() -> None:
|
||||
if state["status"] != "down":
|
||||
state.update({"status": "down", "down_since": now, "last_notify": now})
|
||||
notify(
|
||||
f"{obj_prefix()}"
|
||||
f"🔴 <b>Хост недоступен!</b>\n"
|
||||
f"IP: <code>{ip}</code>" + (f" ({comment})" if comment else "") + "\n"
|
||||
f"Список: <code>{ADDRESS_LIST_NAME}</code>\n"
|
||||
@@ -530,6 +543,7 @@ def main() -> None:
|
||||
dur = fmt_duration(now - ds) if ds else "?"
|
||||
state["last_notify"] = now
|
||||
notify(
|
||||
f"{obj_prefix()}"
|
||||
f"🔴 <b>Хост всё ещё недоступен!</b>\n"
|
||||
f"IP: <code>{ip}</code>" + (f" ({comment})" if comment else "") + "\n"
|
||||
f"Недоступен уже: {dur}\n"
|
||||
@@ -544,6 +558,7 @@ def main() -> None:
|
||||
if not mikrotik_error_notified:
|
||||
mikrotik_error_notified = True
|
||||
notify(
|
||||
f"{obj_prefix()}"
|
||||
f"⚠️ <b>Ошибка подключения к MikroTik</b>\n"
|
||||
f"🔧 Роутер: <b>{router_identity}</b> (<code>{MIKROTIK_HOST}</code>)\n"
|
||||
f"<code>{exc}</code>"
|
||||
|
||||
Reference in New Issue
Block a user