Описание общих параметров для терминальных(ssh/telnet/manad/mikrotik api) обработчиков активации сервисов
Материал из BiTel WiKi
Stark (Обсуждение | вклад) |
Amir (Обсуждение | вклад) |
||
(15 промежуточных версий не показаны.) | |||
Строка 3: | Строка 3: | ||
Параметры конфигурации устройств: | Параметры конфигурации устройств: | ||
- | |||
- | |||
<source lang="bash"> | <source lang="bash"> | ||
- | #timeout соединения | + | #timeout соединения (в миллисекундах). |
sa.command.timeout= | sa.command.timeout= | ||
#команды завершения соединения | #команды завершения соединения | ||
Строка 46: | Строка 44: | ||
#Нужно ли после смены состояния соединения сразу менять состояние в базе | #Нужно ли после смены состояния соединения сразу менять состояние в базе | ||
sa.command.connection.stateModify= | sa.command.connection.stateModify= | ||
+ | #Команды включения опций сервиса на устройстве(общие для всех опций ) | ||
+ | sa.command.common.inetOption.enable= | ||
+ | #Команды отключения опций сервиса на устройстве(общие для всех опций ) | ||
+ | sa.command.common.inetOption.enable= | ||
+ | #Команды включения опций соединения на устройстве(общие для всех опций ) | ||
+ | sa.command.connection.common.inetOption.enable= | ||
+ | #Команды отключения опций соединения на устройстве(общие для всех опций ) | ||
+ | sa.command.connection.common.inetOption.disable= | ||
+ | # Команды включения опций сервиса на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции). | ||
+ | sa.command.common.ancestor.inetOption.1.enable= | ||
+ | ## Команды выключения опций сервиса на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции). | ||
+ | sa.command.common.ancestor.inetOption.1.disable= | ||
+ | # Команды включения опций соединения на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции). | ||
+ | sa.command.connection.common.ancestor.inetOption.1.enable= | ||
+ | ## Команды выключения опций соединения на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции). | ||
+ | sa.command.connection.common.ancestor.inetOption.1.disable= | ||
</source> | </source> | ||
Строка 66: | Строка 80: | ||
Также в командах можно задавать переменные. Переменные обозначаются через значок $. Примеры $ip, $vlan и т.п. Список переменных | Также в командах можно задавать переменные. Переменные обозначаются через значок $. Примеры $ip, $vlan и т.п. Список переменных | ||
<source lang="bash"> | <source lang="bash"> | ||
+ | host - ip адрес устройства из поля Хост/порт | ||
ip - ip адрес сервиса или сессии (192.168.1.1) | ip - ip адрес сервиса или сессии (192.168.1.1) | ||
net - сеть сервиса (192.168.1.1/32) | net - сеть сервиса (192.168.1.1/32) | ||
Строка 76: | Строка 91: | ||
mac - MAC-адрес сервиса (00:14:fd:11:dd:79) | mac - MAC-адрес сервиса (00:14:fd:11:dd:79) | ||
macBytes - MAC-адрес сервиса (0014fd11dd79) | macBytes - MAC-адрес сервиса (0014fd11dd79) | ||
+ | macBytesDoted - MAC-адрес сервиса (abcd.ef12.3456) | ||
+ | servId - код сервиса | ||
servTitle - наименование сервиса | servTitle - наименование сервиса | ||
contractId - код договора | contractId - код договора | ||
- | + | contractTitle - название договора | |
+ | translit($contractTitle) - транслитерация аргумента | ||
+ | ipGate - значение поля Gate из IP-ресурса | ||
+ | ipDns - значение поля DNS из IP-ресурса | ||
+ | ipSubnetMask - значение поля Маска подсети из IP-ресурса | ||
+ | ipParam(myParam) - значение параметра конфигурации myParam из IP-ресурса | ||
+ | deviceAttr(1) - значение атрибута 1 устройства | ||
+ | deviceAttr(1,2,default) - значение атрибута 2 устройства 1 | ||
+ | ifaceTitleBeforeColon - название интерфейса из тайтла до : . Например EPON0/1:2 = EPON0/1 | ||
+ | ifaceTitleAfterColon - название интерфейса из тайтла после : . Например EPON0/1:2 = 2 | ||
+ | servParam - параметр сервиса из вкладки Дополнительно (параметры хранятся с индексами .1/.2 в ключах, поэтому до 7.0 нужно указывать ключ.1) | ||
+ | $deviceIP($servDeviceId) - IP устройства, привязанного к сервису | ||
+ | $deviceIdentifier($servDeviceId) - идентификатор устройства, привязанного к сервису | ||
+ | $iface($servDeviceId) - порт сервиса | ||
</source> | </source> | ||
+ | Дополнительно поддерживается параметр | ||
+ | <source lang="bash"> | ||
+ | \n | ||
+ | </source> | ||
+ | |||
+ | Означающий символ перевода строки(имитация того чтобы пользователь нажал enter). | ||
+ | |||
+ | |||
+ | Для разных типов сервисов можно использовать разный набор команд. Наборы указываются через префикс после sa.commandSet., а в параметре sa.commandSet.<имя_набора>.servTypeIds указываются типы сервисов через запятую, для которых будет выполняться данный набор команд: | ||
+ | <source lang="bash"> | ||
+ | # Наборы команд для сервисов с определенным ID | ||
+ | # - сервис "порт access", id 4 | ||
+ | # - сервис "порт trunk", id 5 | ||
+ | sa.commandSet.cmd1.servTypeIds=4 | ||
+ | sa.commandSet.cmd2.servTypeIds=5 | ||
+ | |||
+ | # Создание сервиса на устройстве. | ||
+ | sa.commandSet.cmd1.serv.create.1=create vlan v$vlan tag $vlan | ||
+ | sa.commandSet.cmd1.serv.create.2=config vlan v$vlan add tagged 9 | ||
+ | sa.commandSet.cmd1.serv.create.3=config vlan v$vlan add untagged $port | ||
+ | # | ||
+ | sa.commandSet.cmd2.serv.create.1=create vlan v$vlan tag $vlan | ||
+ | sa.commandSet.cmd2.serv.create.2=config vlan v$vlan add tagged 9 | ||
+ | sa.commandSet.cmd2.serv.create.3=config vlan v$vlan add tagged $port | ||
+ | |||
+ | # Удаление сервиса из устройства. | ||
+ | sa.commandSet.cmd1.serv.cancel=delete vlan vlanid $vlan | ||
+ | sa.commandSet.cmd2.serv.cancel=delete vlan vlanid $vlan | ||
+ | </source> | ||
'''Использование параметров конфигурации.''' | '''Использование параметров конфигурации.''' | ||
Строка 114: | Строка 173: | ||
sa.command.inetOption.2.enable=$macros($param(setSpeed)) | sa.command.inetOption.2.enable=$macros($param(setSpeed)) | ||
</source> | </source> | ||
+ | |||
+ | '''Команды для всех опций без привязки к конкретному id''' | ||
+ | |||
+ | Рассмотреть можно на примере. Будет работать для любых опций. | ||
+ | |||
+ | <source lang="bash"> | ||
+ | #включении опции | ||
+ | sa.command.common.inetOption.enable= | ||
+ | #выключении опции | ||
+ | sa.command.common.inetOption.enable= | ||
+ | </source> | ||
+ | |||
+ | Пример (многострочный) | ||
+ | <source lang="bash"> | ||
+ | speedRate=$param($option,speedRate,100) | ||
+ | speedCeil=$param($option,speedCeil,100) | ||
+ | sa.command.common.inetOption.enable.1=sudo tc filter add dev $param(iface) protocol ip parent 1:0 prio 5 u32 ht $ip3:$ip4: match ip dst 0.0.0.0/0 flowid 1:$ip34 | ||
+ | sa.command.common.inetOption.enable.2=sudo tc class add dev $param(iface) parent 1:0 classid 1:$ip34 htb rate {@speedRate} ceil {@speedCeil} quantum 2000 mtu 3000 burst 15k | ||
+ | |||
+ | sa.command.common.inetOption.disable.1=sudo tc filter delete dev $param(iface) parent 1:0 protocol ip prio 5 handle $ip3:$ip4:800 u32 | ||
+ | sa.command.common.inetOption.disable.2=sudo tc class delete dev $param(iface) parent 1:0 classid 1:$ip34 htb rate {@speedRate} ceil {@speedCeil} quantum 2000 mtu 3000 burst 15k | ||
+ | </source> | ||
+ | |||
+ | |||
+ | '''Команды для дочерних опций ''' | ||
+ | |||
+ | Рассмотрим на примере. Пусть у нас есть корневая опция в дереве опций (не путать с деревом устройств) с кодом 11. Тогда для нее можно задать такие команды(пример (ногострочный): | ||
+ | <source lang="bash"> | ||
+ | sa.command.common.ancestor.inetOption.11.enable.1=sudo tc filter add dev $param(iface) protocol ip parent 1:0 prio 5 u32 ht $ip3:$ip4: match ip dst 0.0.0.0/0 flowid 1:$ip34 | ||
+ | sa.command.common.ancestor.inetOption.11.enable.2=sudo tc class add dev $param(iface) parent 1:0 classid 1:0x$ip34 htb rate {@speedRate} ceil {@speedCeil} quantum 2000 mtu 3000 burst 15k | ||
+ | |||
+ | |||
+ | sa.command.common.ancestor.inetOption.11.disable.1=sudo tc filter delete dev $param(iface) parent 1:0 protocol ip prio 5 handle $ip3:$ip4:800 u32 | ||
+ | sa.command.common.ancestor.inetOption.11.disable.2=sudo tc class delete dev $param(iface) parent 1:0 classid 1:0x$ip34 htb rate {@speedRate} ceil {@speedCeil} quantum 2000 mtu 3000 burst 15k | ||
+ | </source> | ||
+ | |||
+ | Команды применяются ко всем опциям, которые являются потомками от 11. К самой опции 11 не применяются, она носит группирующую роль. Это бывает полезно когда у вас есть, например, 2 группы опции - скорости и доступа. В этом случае можно их четко разделить с помощью корневой опции ( вынести все опции скорости в общего родителя с названием "Скорости" ). |
Текущая версия на 11:45, 26 сентября 2016
Описание общих параметров для терминальных(ssh/telnet/manad/mikrotik api) обработчиков активации сервисов.
Параметры конфигурации устройств:
#timeout соединения (в миллисекундах). sa.command.timeout= #команды завершения соединения sa.command.exit= #Команды, выполняемые при подключении к терминалу( например configure treminal для cisco) sa.command.connect= #Команды, выполняемые перед отключением от терминала. sa.command.disconnect= #Команды включения сервиса на устройстве sa.command.serv.enable= #Команды выключения сервиса на устройстве sa.command.serv.disable= #Команды создания сервиса на устройстве. sa.command.serv.create= #Команды удаления сервиса с устройства. sa.command.serv.cancel= #Команды включения опций сервиса на устройстве(1 - это код опции). sa.command.inetOption.1.enable= #Команды выключения опций сервиса на устройстве(1 - это код опции). sa.command.inetOption.1.disable= #Команды включения соединения на устройстве sa.command.connection.enable= #Команды выключения соединения на устройстве sa.command.connection.disable= #Команды включения опций соединения на устройстве( 1 - код опции). sa.command.connection.inetOption.1.enable= #Команды включения опций соединения на устройстве( 1 - код опции). sa.command.connection.inetOption.1.disable= #Команды закрытия соединения на устройстве. sa.command.connection.close= #Команды на начало аккаунтинга (старта соединения). sa.command.onAccountingStart= #Команды на окончание аккаунтинга (стоп соединения). sa.command.onAccountingStop= #Корень опций Inet, с котороми происходит работа. sa.inetOption.root= #Нужно ли после смены состояния соединения сразу менять состояние в базе sa.command.connection.stateModify= #Команды включения опций сервиса на устройстве(общие для всех опций ) sa.command.common.inetOption.enable= #Команды отключения опций сервиса на устройстве(общие для всех опций ) sa.command.common.inetOption.enable= #Команды включения опций соединения на устройстве(общие для всех опций ) sa.command.connection.common.inetOption.enable= #Команды отключения опций соединения на устройстве(общие для всех опций ) sa.command.connection.common.inetOption.disable= # Команды включения опций сервиса на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции). sa.command.common.ancestor.inetOption.1.enable= ## Команды выключения опций сервиса на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции). sa.command.common.ancestor.inetOption.1.disable= # Команды включения опций соединения на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции). sa.command.connection.common.ancestor.inetOption.1.enable= ## Команды выключения опций соединения на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции). sa.command.connection.common.ancestor.inetOption.1.disable=
Команды можно заводить 2-мя способами
1) Через разделитель ";" . Например
sa.command.connection.stateModify=access-template bgb-in dynamic-in $ip $netmaskWild any;access-template bgb-out dynamic-out any $ip $netmaskWild
2) Команду задавать команду отдельной строкой с общим префиксом
sa.command.connection.stateModify.1=access-template bgb-in dynamic-in $ip $netmaskWild any sa.command.connection.stateModify.2=access-template bgb-out dynamic-out any $ip $netmaskWild
Также в командах можно задавать переменные. Переменные обозначаются через значок $. Примеры $ip, $vlan и т.п. Список переменных
host - ip адрес устройства из поля Хост/порт ip - ip адрес сервиса или сессии (192.168.1.1) net - сеть сервиса (192.168.1.1/32) mask,bitmask - битовая маска сервиса (32) netmask - маска сервиса в виде (255.255.255.255) netmaskWild - маска wildcard сервиса (0.0.0.0) vlan - vlan сервиса iface, port - интерфейс сервиса ifaceTitle - наименование интерфейса сервиса mac - MAC-адрес сервиса (00:14:fd:11:dd:79) macBytes - MAC-адрес сервиса (0014fd11dd79) macBytesDoted - MAC-адрес сервиса (abcd.ef12.3456) servId - код сервиса servTitle - наименование сервиса contractId - код договора contractTitle - название договора translit($contractTitle) - транслитерация аргумента ipGate - значение поля Gate из IP-ресурса ipDns - значение поля DNS из IP-ресурса ipSubnetMask - значение поля Маска подсети из IP-ресурса ipParam(myParam) - значение параметра конфигурации myParam из IP-ресурса deviceAttr(1) - значение атрибута 1 устройства deviceAttr(1,2,default) - значение атрибута 2 устройства 1 ifaceTitleBeforeColon - название интерфейса из тайтла до : . Например EPON0/1:2 = EPON0/1 ifaceTitleAfterColon - название интерфейса из тайтла после : . Например EPON0/1:2 = 2 servParam - параметр сервиса из вкладки Дополнительно (параметры хранятся с индексами .1/.2 в ключах, поэтому до 7.0 нужно указывать ключ.1) $deviceIP($servDeviceId) - IP устройства, привязанного к сервису $deviceIdentifier($servDeviceId) - идентификатор устройства, привязанного к сервису $iface($servDeviceId) - порт сервиса
Дополнительно поддерживается параметр
\n
Означающий символ перевода строки(имитация того чтобы пользователь нажал enter).
Для разных типов сервисов можно использовать разный набор команд. Наборы указываются через префикс после sa.commandSet., а в параметре sa.commandSet.<имя_набора>.servTypeIds указываются типы сервисов через запятую, для которых будет выполняться данный набор команд:
# Наборы команд для сервисов с определенным ID # - сервис "порт access", id 4 # - сервис "порт trunk", id 5 sa.commandSet.cmd1.servTypeIds=4 sa.commandSet.cmd2.servTypeIds=5 # Создание сервиса на устройстве. sa.commandSet.cmd1.serv.create.1=create vlan v$vlan tag $vlan sa.commandSet.cmd1.serv.create.2=config vlan v$vlan add tagged 9 sa.commandSet.cmd1.serv.create.3=config vlan v$vlan add untagged $port # sa.commandSet.cmd2.serv.create.1=create vlan v$vlan tag $vlan sa.commandSet.cmd2.serv.create.2=config vlan v$vlan add tagged 9 sa.commandSet.cmd2.serv.create.3=config vlan v$vlan add tagged $port # Удаление сервиса из устройства. sa.commandSet.cmd1.serv.cancel=delete vlan vlanid $vlan sa.commandSet.cmd2.serv.cancel=delete vlan vlanid $vlan
Использование параметров конфигурации.
Значение параметра конфигурации устройства type=:
sa.command.serv.enable=set_type=$param(type) sa.command.serv.enable=set_type=$param(type,defValue)
Значение параметра конфигурации опции (обязательно указание значения по умолчанию):
sa.command.serv.enable=$param($option(5),speed,100)
Использование в макросах опций и их конфигурации.
Значение конфигурации активной опции, которая является дочерней по отношению к опции 5 (если такая опция есть и активна). Если активной опции, дочерней к опции 5, нет или в ее конфигурации не указан параметр speed= то берется значение по умолчанию:
sa.command.serv.enable=set_speed=$param($option(5),speed,100)
При указании команды в параметре sa.command.inetOption.x.enable= аргумент в макросе $option указывать не обязательно - $option вернет опцию x.
sa.command.inetOption.8.enable=set_speed=$param($option,speed,100)
Использование макросов в макросе.
setSpeed=set_speed=$param($option,speed,100) sa.command.inetOption.1.enable=$macros($param(setSpeed)) sa.command.inetOption.2.enable=$macros($param(setSpeed))
Команды для всех опций без привязки к конкретному id
Рассмотреть можно на примере. Будет работать для любых опций.
#включении опции sa.command.common.inetOption.enable= #выключении опции sa.command.common.inetOption.enable=
Пример (многострочный)
speedRate=$param($option,speedRate,100) speedCeil=$param($option,speedCeil,100) sa.command.common.inetOption.enable.1=sudo tc filter add dev $param(iface) protocol ip parent 1:0 prio 5 u32 ht $ip3:$ip4: match ip dst 0.0.0.0/0 flowid 1:$ip34 sa.command.common.inetOption.enable.2=sudo tc class add dev $param(iface) parent 1:0 classid 1:$ip34 htb rate {@speedRate} ceil {@speedCeil} quantum 2000 mtu 3000 burst 15k sa.command.common.inetOption.disable.1=sudo tc filter delete dev $param(iface) parent 1:0 protocol ip prio 5 handle $ip3:$ip4:800 u32 sa.command.common.inetOption.disable.2=sudo tc class delete dev $param(iface) parent 1:0 classid 1:$ip34 htb rate {@speedRate} ceil {@speedCeil} quantum 2000 mtu 3000 burst 15k
Команды для дочерних опций
Рассмотрим на примере. Пусть у нас есть корневая опция в дереве опций (не путать с деревом устройств) с кодом 11. Тогда для нее можно задать такие команды(пример (ногострочный):
sa.command.common.ancestor.inetOption.11.enable.1=sudo tc filter add dev $param(iface) protocol ip parent 1:0 prio 5 u32 ht $ip3:$ip4: match ip dst 0.0.0.0/0 flowid 1:$ip34 sa.command.common.ancestor.inetOption.11.enable.2=sudo tc class add dev $param(iface) parent 1:0 classid 1:0x$ip34 htb rate {@speedRate} ceil {@speedCeil} quantum 2000 mtu 3000 burst 15k sa.command.common.ancestor.inetOption.11.disable.1=sudo tc filter delete dev $param(iface) parent 1:0 protocol ip prio 5 handle $ip3:$ip4:800 u32 sa.command.common.ancestor.inetOption.11.disable.2=sudo tc class delete dev $param(iface) parent 1:0 classid 1:0x$ip34 htb rate {@speedRate} ceil {@speedCeil} quantum 2000 mtu 3000 burst 15k
Команды применяются ко всем опциям, которые являются потомками от 11. К самой опции 11 не применяются, она носит группирующую роль. Это бывает полезно когда у вас есть, например, 2 группы опции - скорости и доступа. В этом случае можно их четко разделить с помощью корневой опции ( вынести все опции скорости в общего родителя с названием "Скорости" ).