Набор Python-скриптов для автоматизации массовой настройки оборудования на базе B4Com OS (в т.ч. OcNOS).
Главная цель проекта — показать рабочую схему подключения к реальному устройству и базовый шаблон массовой конфигурации через Netmiko. Всё остальное — опциональные примеры, которые можно расширять самостоятельно.
Скрипты проверялись:
- на реальном коммутаторе B4Com CS4100 (CS4148Q-8U);
- в эмуляции OcNOS (GNS3/QEMU).
Для подключения использовался Netmiko с device_type="ipinfusion_ocnos" — это стабильный вариант для данной ОС.
Проект — минимальный каркас:
- показывает корректный способ подключения к OcNOS/B4Com;
- даёт базовые массовые операции (VLAN → trunk → SVI → VRF → bind IP to VRF → VRRP per VRF → OSPF per VRF→ cleanup);
- оставляет место для расширений.
Если вам нужно больше режимов, протоколов или иной логики — добавляйте сами: структура скриптов специально сделана прямой и читаемой.
Скрипты запускаются по шагам и опираются на общий конфиг b4_cfg.py.
Основные скрипты
00_check_connect_b4.py— проверка подключения и сбор стартового состояния.10_create_vlans_b4.py— массовое создание VLAN и привязка к VLAN bridge.11_set_trunk_b4.py— настройка trunk-порта под созданный диапазон VLAN.20_create_svis_b4.py— создание SVI-интерфейсов.30_create_vrfs_b4.py— создание VRF.31_bind_svis_to_vrf_b4.py— привязка SVI к VRF и назначение IP.35_create_vrrp_b4.py— создание VRRP-групп на SVI.50_create_ospf_b4.py— создание OSPF: один процесс на каждый VRF.40_collect_outputs_b4.py— сбор проверочных show.90_delete_all_b4.py— cleanup по значениям из cfg.run_all_b4.py— последовательный запуск всех основных шагов в правильном порядке
(10 → 11 → 20 → 30 → 31 → 35 → 50 → 40).
Удобно для полного прогона теста одной командой.
Для эмуляции (GNS3/OcNOS)
В папке gns3/ лежит отдельная версия b4_netmiko.py, адаптированная под “шумную” консоль QEMU (другие тайминги и вход в config-mode).
- Python 3.10+
- Зависимости: pip install netmiko
Откройте b4_cfg.py и задайте:
-
параметры подключения (HOST, PORT, USER, PASSWORD, DEVICE_TYPE);
-
диапазоны VLAN/SVI/VRF и IP-схему;
-
параметры отправляемых пакетов и задержек.
Удаляется и создаётся ровно то, что задано в cfg. Меняете диапазоны в cfg → меняется фактический объём конфигурации и удаления.
-
python 00_check_connect_b4.py
-
python 10_create_vlans_b4.py
-
python 11_set_trunk_b4.py
-
python 20_create_svis_b4.py
-
python 30_create_vrfs_b4.py
-
python 31_bind_svis_to_vrf_b4.py
-
python 35_create_vrrp_b4.py
-
python 50_create_ospf_b4.py
-
python 40_collect_outputs_b4.py
Если нужен полный прогон одной командой:
- python run_all_b4.py
Удаление/сброс:
- python 90_delete_all_b4.py
Каждый запуск создаёт набор файлов в out_b4/:
*_session.log — полный диалог с CLI (сырые ответы устройства);
*_commands.log — какие команды отправлялись;
*_errors.log — только те места, где устройство ругалось.
Логи не перезаписываются: каждый запуск — новый набор файлов с таймстампом.
Важно про errors.log:
при создании VLAN часто появляются предупреждения CLI — файл ошибок может появиться, но это не обязательно критично. Смотрите контекст в session.log.
B4Com OS по умолчанию транзакционная (нужен commit). Netmiko это не обрабатывает, поэтому в начале каждого скрипта отправляется:
cmlsh transaction disable
Это выключает commit на время сессии.
Тесты
При удалении большого количества сущностей (например, несколько тысяч VLAN/SVI) устройство иногда не успевает переварить поток удаления. Если удалилось не всё и есть ошибки — просто запустите 90_delete_all_b4.py ещё раз, остатки дочистятся.
На реальном B4Com CS4100:
-
подтверждена стабильная массовая конфигурация в объёмах от сотен до тысяч сущностей;
-
протестированы кейсы до 2100 VLAN / 2100 SVI / 600 VRF / 600 OSPF per-VRF;
-
все последние тесты завершались без критических ошибок, интерфейсы и процессы были активны.
Цель была простая: добиться рабочей автоматизации OcNOS/B4Com через Netmiko на реальном железе и показать понятный шаблон массовых настроек. Цель достигнута: есть стабильное подключение, базовые массовые скрипты и воспроизводимые тесты на реальном коммутаторе. Дальше проект можно развивать под любые нужды — логика и структура для этого уже есть.