Netpulse_SasS/db/import/README.md
byrsapty f162dcab19 Імпорт профілів збору конфігу з NOC Project
147 профілів на 67 вендорів у ncm.profiles: Cisco, Huawei, Juniper,
MikroTik, Eltex, D-Link, HP, Brocade, Extreme, Alcatel, Allied Telesis,
Qtech, ZTE, BDCOM та інші.

Розбір через ast, без виконання: NOC-скрипт тягне половину свого
фреймворку, і імпортувати його означало б або принести весь NOC, або
підсунути заглушки, які мовчки змінюють поведінку.

З кожного get_config.py береться перша команда збору, гілка startup,
strip_first_lines і регекси платформ. Альтернативи лишаються в
коментарі. Шум (exit, sh, changeto system, terminal width 200)
відсіюється явним списком: Cisco.ASA після фільтра дає рівно
more system:running-config, Juniper.JUNOSe — рівно
show running-configuration замість чотирьох команд із сусідніх гілок.

Пейджер додається лише мережевому CLI: Eltex SMG і TAU знімають конфіг
через cat, і terminal datadump у bash просто впав би.

Важливо: команди — з NOC, а промпти й вимкнення пейджера — ні. У дампі
всі __init__.py порожні (359 із 364), а NOC тримає pattern_prompt саме
там. Вони проставлені за родиною вендора з типових значень і потребують
перевірки на живому залізі.

Не витягнулись 23 з 170, і не через помилку: 21 знімає конфіг по HTTP
(камери, відеокодери, MikroTik SwOS, HP iLO2), 2 — порожні заглушки в
самому NOC.

Виконувати профілі поки нікому: агентського модуля ncm (SSH/Telnet)
немає, це Етап 7.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 02:34:55 +03:00

3.1 KiB
Raw Blame History

Імпорт профілів збору конфігу з NOC Project

db/migrations/0014_ncm_profiles.sql згенеровано цими скриптами з профілів NOC Project. Тримаємо їх у репозиторії, щоб імпорт можна було повторити на новішому дампі, а не розбирати тисячу рядків INSERT-ів вручну.

Як повторити

python extract_noc.py /шлях/до/profiles > noc_config.json
python gen_profiles.py noc_config.json ../migrations/0014_ncm_profiles.sql

why_skipped.py пояснює, чому конкретний профіль не дав команди.

Як це працює

Файли розбираються модулем astбез виконання. Це принципово: NOC-скрипт імпортує половину свого фреймворку, і спроба його імпортувати означала б або тягнути весь NOC, або підсовувати заглушки, які мовчки змінюють поведінку. AST бачить рівно те, що написано в тексті.

З кожного get_config.py витягується:

  • виклики self.cli("…") — команди збору;
  • гілка policy == "s" — команда startup-конфігу;
  • strip_first_lines(config, N) — скільки службових рядків відкинути;
  • @BaseScript.match(platform__regex=…) — варіанти під конкретні моделі.

Що звідки взято — це важливо розрізняти

Команди збору — з NOC. Головна цінність імпорту: сотні годин чужої роботи з реальним залізом.

Промпти, вимкнення пейджера й шаблони маскування — НЕ з NOC. У переданому дампі всі __init__.py порожні (359 із 364), а саме там NOC тримає pattern_prompt і command_disable_pager. Тому вони проставлені за родиною вендора з типових значень і потребують перевірки на живому залізі перед промисловим ужитком.

Що не витягується

З 170 файлів команду дають 147. Решта:

  • 21 — не використовують CLI взагалі. Конфіг знімається через HTTP (self.http.get(...)) або збирається з шматків: камери Axis, Beward, Dahua, Hikvision, відеокодери Harmonic, MikroTik SwOS, TFortis, HP iLO2, OS/Linux. Для них потрібен окремий збирач по HTTP, а не CLI.
  • 2 — порожні заглушки в самому NOC: Alcatel/7324RU і Ruckus/SmartZone мають клас Script без жодного методу.

Ці 23 не «загубились» — у них просто немає CLI-команди, яку можна взяти.