Описание общих параметров для терминальных(ssh/telnet/manad/mikrotik api) обработчиков активации сервисов

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
 
(17 промежуточных версий не показаны.)
Строка 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 - код договора
 +
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>
 +
 +
'''Использование параметров конфигурации.'''
 +
 +
Значение параметра конфигурации устройства type=:
 +
<source lang="bash">
 +
sa.command.serv.enable=set_type=$param(type)
 +
sa.command.serv.enable=set_type=$param(type,defValue)
 +
</source>
 +
 +
Значение параметра конфигурации опции (обязательно указание значения по умолчанию):
 +
<source lang="bash">
 +
sa.command.serv.enable=$param($option(5),speed,100)
 +
</source>
 +
 +
'''Использование в макросах опций и их конфигурации.'''
 +
 +
Значение конфигурации активной опции, которая является дочерней по отношению к опции 5 (если такая опция есть и активна). Если активной опции, дочерней к опции 5, нет или в ее конфигурации не указан параметр speed= то берется значение по умолчанию:
 +
<source lang="bash">
 +
sa.command.serv.enable=set_speed=$param($option(5),speed,100)
 +
</source>
 +
 +
При указании команды в параметре sa.command.inetOption.x.enable= аргумент в макросе $option указывать не обязательно - $option вернет опцию x.
 +
<source lang="bash">
 +
sa.command.inetOption.8.enable=set_speed=$param($option,speed,100)
 +
</source>
 +
 +
'''Использование макросов в макросе.'''
 +
 +
<source lang="bash">
 +
setSpeed=set_speed=$param($option,speed,100)
 +
sa.command.inetOption.1.enable=$macros($param(setSpeed))
 +
sa.command.inetOption.2.enable=$macros($param(setSpeed))
 +
</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 группы опции - скорости и доступа. В этом случае можно их четко разделить с помощью корневой опции ( вынести все опции скорости в общего родителя с названием "Скорости" ).

Личные инструменты