Есть задача, в сервисах добавить дополнительный IP адрес для клиента в модуле Inet, хотим это сделать через добавление дочернего сервиса. Например:
Вложение:
Выделение_519.png [ 9.45 КБ | Просмотров: 7514 ]
Проблема возникает при добавлении дочернего сервиса, отрабатывает полный список команд из конфигурации устройста, то есть пересоздается родительский сервис, как этого избежать? В telegram'е товарищ Amir подсказал сделать так:
Код:
servCreateLoop=ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$providerConractTitle;
sa.commandSet.cmd1.serv.create.1=interface GigabitEthernet 0/$param(cl_interface,0).$providerConractTitle;
$loopServ(servCreateLoop,false,true);
$loopServ(имя_параметра_шаблона_команды,использовать_в_цикле_родительский_сервис,выполять_как_отдельную_команду_или_построить_строку)
Получаем лог:
Вложение:
Выделение_520.png [ 59.43 КБ | Просмотров: 7514 ]
То есть loopServ пустой, что не так?
Вот полный список команд в настройках устройства:
Код:
# Команды, выполняемые при подключении к терминалу( например configure treminal для cisco)
sa.command.connect=configure terminal
# Команды, выполняемые перед отключением от терминала.
# sa.command.disconnect=exit
# Команды создания сервиса на устройстве.
# Создание IP, 1 - тип услуги "Интернет"
sa.commandSet.cmd1.servTypeIds=1
# Создание дополнительного IP в том же VLAN'е, 3 - тип услуги доп. IP
sa.commandSet.cmd3.servTypeIds=3
sa.commandSet.cmd1.serv.create.1=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.commandSet.cmd1.serv.create.2=description Contract $translit($contractTitle)
sa.commandSet.cmd1.serv.create.3=encapsulation dot1Q $vlan
sa.commandSet.cmd1.serv.create.4=ip unnumbered $param(loopback,Loopback0)
sa.commandSet.cmd1.serv.create.5=no cdp enable
sa.commandSet.cmd1.serv.create.6=traffic-shape rate $param($option,ceil_in,5000000)
sa.commandSet.cmd1.serv.create.7=exit
# sa.commandSet.cmd1.serv.create.8=ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
######
servCreateLoop=ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$provConractTitle;
sa.commandSet.cmd1.serv.create.8=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle;$loopServ(servCreateLoop,false,true);
######
# Дополнительный IP адрес
sa.commandSet.cmd3.serv.create=ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
#Команды удаления сервиса с устройства.
sa.commandSet.cmd1.serv.cancel=no interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.commandSet.cmd3.serv.cancel=no ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
#Команды включения сервиса на устройстве
sa.commandSet.cmd1.serv.cancel1=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.commandSet.cmd1.serv.cancel2=no shutdown
#Команды выключения сервиса на устройстве
sa.commandSet.cmd1.serv.disable1=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.commandSet.cmd1.serv.disable2=shutdown
# sa.commandSet.cmd3.serv.disable=HELLLOOOOOOOOOOOOOOOOOO
# Команды включения опций сервиса на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции).
sa.command.common.ancestor.inetOption.1.enable.1=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.command.common.ancestor.inetOption.1.enable.2=no traffic-shape rate
sa.command.common.ancestor.inetOption.1.enable.3=traffic-shape rate $param($option,ceil_in,5000000)
## Команды выключения опций сервиса на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции).
sa.command.common.ancestor.inetOption.1.disable=
На тестовом стенде версия биллинга:
BGBillingServer v 7.0.1129
Java:
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)