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>
3.1 KiB
Імпорт профілів збору конфігу з 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-команди, яку можна взяти.