fix: стартовое сообщение после подключения к MikroTik
This commit is contained in:
+17
-30
@@ -181,36 +181,7 @@ def main() -> None:
|
|||||||
failure_count: dict[str, int] = {}
|
failure_count: dict[str, int] = {}
|
||||||
host_down: dict[str, bool] = {}
|
host_down: dict[str, bool] = {}
|
||||||
|
|
||||||
# Подключаемся один раз для стартового сообщения
|
startup_notified = False
|
||||||
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"\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:
|
while True:
|
||||||
pool = None
|
pool = None
|
||||||
@@ -229,6 +200,22 @@ def main() -> None:
|
|||||||
# Читаем актуальный список адресов с MikroTik
|
# Читаем актуальный список адресов с MikroTik
|
||||||
ip_list = fetch_address_list(api)
|
ip_list = fetch_address_list(api)
|
||||||
|
|
||||||
|
# Стартовое сообщение — отправляем только после успешного подключения
|
||||||
|
if not startup_notified:
|
||||||
|
identity = fetch_identity(api)
|
||||||
|
ip_lines = "\n".join(f" • <code>{ip}</code>" for ip in ip_list) or " (список пуст)"
|
||||||
|
notify(
|
||||||
|
f"🟢 <b>MikroTik Monitor запущен</b>\n"
|
||||||
|
f"\n"
|
||||||
|
f"🔧 Роутер: <b>{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} сек"
|
||||||
|
)
|
||||||
|
startup_notified = True
|
||||||
|
|
||||||
if not ip_list:
|
if not ip_list:
|
||||||
log.warning("Address-list '%s' пуст или не найден!", ADDRESS_LIST_NAME)
|
log.warning("Address-list '%s' пуст или не найден!", ADDRESS_LIST_NAME)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user