forum.bitel.ru
http://forum.bitel.ru/

Выполнение команд на двух устройствах
http://forum.bitel.ru/viewtopic.php?f=44&t=12797
Страница 1 из 1

Автор:  dex [ 19 фев 2018, 14:43 ]
Заголовок сообщения:  Выполнение команд на двух устройствах

На договоре один сервис. В нем можно указать разные опции.
Можно ли сделать так, чтобы допустим одна опция выполнялась на одном физическом устройстве (на микротике), а другая опция на другом микротике.
Например: одна опция ограничивает скорость, добавляя IP адрес на одном микротике, а вторая опция добавляет этот же IP на второй микротик для резервного канала.

Автор:  borisk [ 19 фев 2018, 16:06 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

А почему нет? Команды выполняются на всех родительских устройствах, имеющих ServiceActivator.
Но конечно бы неплохо знать версию вашего биллинга и как дерево организовано.

Автор:  dex [ 20 фев 2018, 08:46 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

Информация о версии:

Клиент: вер. 7.0.924 / 15.12.2017 12:49:46
os: Windows 10; java: Java HotSpot(TM) Client VM, v.1.8.0_161
Сервер: вер. 7.0.1295 / 15.12.2017 12:51:00
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_73

bill: вер. 7.0.126 / 01.12.2017 17:51:12
card: вер. 7.0.45 / 01.12.2017 17:51:21
dba: вер. 7.0.168 / 01.12.2017 17:51:43
dialup: вер. 7.0.322 / 01.12.2017 17:50:41
inet: вер. 7.0.796 / 20.12.2017 16:45:07
ipn: вер. 7.0.272 / 12.12.2017 18:57:24
mps: вер. 7.0.223 / 01.12.2017 17:52:04
npay: вер. 7.0.212 / 01.12.2017 18:45:14
reports: вер. 7.0.237 / 01.12.2017 17:52:36
robokassa: вер. 7.0.31 / 01.12.2017 17:52:39
ru.bitel.bgbilling.plugins.bonus: вер. 7.0.132 / 01.12.2017 17:51:19
ru.bitel.bgbilling.plugins.dispatch: вер. 7.0.95 / 01.12.2017 17:51:44
ru.bitel.bgbilling.plugins.documents: вер. 7.0.180 / 01.12.2017 17:51:44
trayinfo: вер. 7.0.179 / 01.12.2017 17:52:53
tv: вер. 7.0.257 / 04.12.2017 20:34:15

Дерево такое.
Access+Accounting
-Border
--Nas

Border - (Микротик1) (сюда при добавлении опции на сервис нужно, чтобы добавлялся IP адрес сервиса в определенный адрес лист)
Nas (Микротик2) - сюда подключаются клиенты по PPPoE клиенты и здесь же режется скорость.

Что нужно добавить в конфигурацию, чтобы при подключении клиента к NAS отрабатывала конфигурация не только типа устройства для NAS, но и типа устройства для Border?
Например: у клиента две опции на сервисе, одна ограничение скорости 20М/бит, а вторая опция для добавления его же IP в адрес лист на Border.

Автор:  borisk [ 20 фев 2018, 11:28 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

Считаю, что вы используете TerminalServiceActivator для управления Mikrotik. И, как я понял, в устройстве NAS у вас уже все настроено и работает.
Чтобы это так же работало и в устройстве Border, вам всего лишь надо продублировать в нем конфигурацию для тех опций, которые должны на нем обрабатываться. Например мы хотим, чтобы опция с id == 5 обрабатывалась на устройстве Border, для этого в его конфигурации пишем например так:
Код:
# команды, вызываемые при включении опции ID=x (и дочерних опций по отношению к опции с ID=x) на соединении
sa.terminal.connection.inetOption.5.enable=команды_микротика
# команды, вызываемые при отключении опции ID=x (и дочерних опций по отношению к опции с ID=x) на соединении
sa.terminal.connection.inetOption.5.disable=команды_микротика

Автор:  dex [ 21 фев 2018, 09:14 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

Спасибо за предыдущие ответы!

Выбран MikrotikServiceActivator

#Команды включения опций сервиса на устройстве
sa.command.inetOption.50.enable=/ip/firewall/address-list/add\n=address=$ip\n=list=123\n=comment=$contractTitle

#Команды выключения опций сервиса на устройстве
sa.command.inetOption.50.disable=/ip/firewall/address-list/remove\n=numbers=$contractTitle

Эти команды выполняются при условии, если ip прописан статикой на сервисе.

Как сделать, чтобы они выполнялись и с динамическими ip адресами.

Еще один вопросик.

Эти команды выполняются только при добавлении опции на сервис в договоре и удалении его.

Как сделать чтобы при отключении клиента - он удалялся, а при подключении и получении им нового динамического ip адреса опция добавлялась заново на Mikrotik?

Заранее благодарен за ответ.

Автор:  borisk [ 21 фев 2018, 11:19 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

Переходите на TerminalServiceActivator, более продвинут, а MikrotikServiceActivator похоронят.
По вашему вопросу http://wiki.bitel.ru/index.php/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%89%D0%B8%D1%85_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85(ssh/telnet/manad/mikrotik_api)_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2_%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B0%D1%86%D0%B8%D0%B8_%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%BE%D0%B2

Вам нужно onAccountingStart и onAccountingStop

Автор:  borisk [ 21 фев 2018, 11:20 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

Еще обратите внимание на
Код:
#Команды включения опций соединения на устройстве( 1 - код опции).
sa.command.connection.inetOption.1.enable=
#Команды включения опций соединения на устройстве( 1 - код опции).
sa.command.connection.inetOption.1.disable=

Автор:  dex [ 22 фев 2018, 12:20 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

Выбрал TerminalServiceActivator

Настроил под него команды.

И опять только если статикой прописан IP адрес, тогда и работает. А если динамикой получает, то не работает.

Уже эту опцию и в тариф добавил. Тоже самое со статикой работает. С динамикой нет!

Конфиг:

# Хост подключения (если не указан, используется значение из поля Хост/порт)
#sa.terminal.host=
# Порт подключения (если не указан, используется значение из поля Хост/порт)
#sa.terminal.port=
# протокол подключения (telnet/ssh/tcp/mikrotik/shell)
sa.terminal.protocol=ssh
# логин (если не указан, используется значение из поля Логин)
#sa.terminal.username=
# пароль (если не указан, используется значение из поля Пароль)
#sa.terminal.password=
# Шаблон приглашения ввода команды (для telnet/ssh/tcp)
# Для ssh можно указать regexp, если в начале и конце строки будет символ '\', например, "\(#)|(~\$)\"
sa.terminal.endSequence=>

# Для sa.terminal.protocol=mikrotik - хост и порт, с которых открывать соединение
#sa.terminal.sourceHost=
#sa.terminal.sourcePort=

# Отложенное подключение. Если указано 1, то подключение происходит перед выполнением первой команды,
# иначе - 0 (по умолчанию), подключение происходит в методе connect
sa.terminal.lazyConnect=0

# Команды, которые необходимо выполнить после установки соединения
#sa.terminal.connect=
# команды, которые необходимо выполнить перед отключением соединения
#sa.terminal.disconnect=
# команда выхода (отключения)
sa.terminal.exit=quit

Этот код работает при прописанном статически IP адресе на сервисе (при добавлении и удалении опции на сервис):
# команды, вызываемые при включении опции ID=x (и дочерних опций по отношению к опции с ID=x) на сервисе
sa.terminal.serv.inetOption.50.enable=ip firewall address-list add address=${ip()} list=123 comment=${contractTitle()}
# команды, вызываемые при отключении опции ID=x (и дочерних опций по отношению к опции с ID=x) на сервисе
sa.terminal.serv.inetOption.50.disable=ip firewall address-list remove numbers="${contractTitle()}"

Тоже нужно прописать статический IP адрес/ Этот код отрабатывает если эту тарифную опцию добавить в тариф, который на этом договоре. Отрабатывает при старте сессии и завершении сессии:
# команды, вызываемые при включении опции ID=x (и дочерних опций по отношению к опции с ID=x) на соединении
sa.terminal.connection.inetOption.50.enable=ip firewall address-list add address=${ip()} list=123 comment=${contractTitle()}
# команды, вызываемые при отключении опции ID=x (и дочерних опций по отношению к опции с ID=x) на соединении
sa.terminal.connection.inetOption.50.disable=ip firewall address-list remove numbers="${contractTitle()}"

Автор:  borisk [ 22 фев 2018, 15:38 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

добавьте еще
Код:
#
sa.terminal.connection.onAccountingStart=${optionsEnable()}
sa.terminal.connection.onAccountingStop=${optionsDisable()}

Автор:  borisk [ 22 фев 2018, 15:39 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

Кстати, вопрос в к разработчикам так и остался - почему это в дефолтовых сетах не сделано? :)

Автор:  dex [ 23 фев 2018, 11:01 ]
Заголовок сообщения:  Re: Выполнение команд на двух устройствах

borisk писал(а):
добавьте еще
Код:
#
sa.terminal.connection.onAccountingStart=${optionsEnable()}
sa.terminal.connection.onAccountingStop=${optionsDisable()}

Cпс огромное, помогло, теперь добавляется и статические и динамические адреса.
Вот наша полная конфигурация типа устройства для TerminalServiceActivator в связке с Mikrotik (если убрать любую из строк, перестает работать либо полностью либо частично):
Код:
# протокол подключения (telnet/ssh/tcp/mikrotik/shell)
sa.terminal.protocol=ssh
# Шаблон приглашения ввода команды (для telnet/ssh/tcp)
# Для ssh можно указать regexp, если в начале и конце строки будет символ '\', например, "\(#)|(~\$)\"
sa.terminal.endSequence=>
# команда выхода (отключения)
sa.terminal.exit=quit
# команды, вызываемые при включении опции ID=x (и дочерних опций по отношению к опции с ID=x) на сервисе
sa.terminal.serv.inetOption.50.enable=ip firewall address-list add address=${ip()} list=123 comment="${servTitle()} (${contractTitle()})"
# команды, вызываемые при отключении опции ID=x (и дочерних опций по отношению к опции с ID=x) на сервисе
sa.terminal.serv.inetOption.50.disable=ip firewall address-list remove numbers="${servTitle()} (${contractTitle()})"
# команды, вызываемые при изменении соединения (состояние/опции)
sa.terminal.connection.modify=${optionsEnable()}
# команды, вызываемые при включении опции ID=x (и дочерних опций по отношению к опции с ID=x) на соединении
sa.terminal.connection.inetOption.50.enable=ip firewall address-list add address=${ip()} list=123 comment="${servTitle()} (${contractTitle()})"
# команды, вызываемые при отключении опции ID=x (и дочерних опций по отношению к опции с ID=x) на соединении
sa.terminal.connection.inetOption.50.disable=ip firewall address-list remove numbers="${servTitle()} (${contractTitle()})"
# команды, вызываемые при старте соединения
sa.terminal.connection.onAccountingStart=${optionsEnable()}
# команды, вызываемые при стопе соединения
sa.terminal.connection.onAccountingStop=${optionsDisable()}


Всех защитников с 23 февраля!

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/