...
Блок кода | ||||
---|---|---|---|---|
| ||||
# Хост подключения (если не указан, используется значение из поля Хост/порт) #sa.terminal.host= # Порт подключения (если не указан, используется значение из поля Хост/порт) #sa.terminal.port= # протокол подключения (telnet/ssh/tcp/mikrotik/shell/mikrotik-api) sa.terminal.protocol=telnet # логин (если не указан, используется значение из поля Логин) #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 |
При подключении по ssh можно использовать RSA/DSA ключ. При этом в конфигурации необходимо указать путь к приватному ключу:
Блок кода | ||||
---|---|---|---|---|
| ||||
# протокол подключения
sa.terminal.protocol=ssh
# логин (если не указан, используется значение из поля Логин)
#sa.terminal.username=
# пароль (если не указан, используется значение из поля Пароль)
#sa.terminal.password=
# Путь к ключу
sa.terminal.privateKeyFile=id_rsa |
Параметр sa.endSequence используется для определения окончания вывода от удаленного оборудования и приглашения ввода команд. Например, когда консоль ssh выглядит так:
...
Блок кода | ||||
---|---|---|---|---|
| ||||
# Смена состояния сессии после вызова connectionModify (по умолчанию 1) # (подробнее о состоянии на странице документации Сущности модуля Inet - Сессии) #sa.terminal.connection.stateModify=1 # Пропуск дочернего аккаунтинга (дочерних/сервисны сессий ISG/SmartEdge) # Т.е. для них onAccountingStart/onAccountingStop вызываться не будет (по умолчанию 1) #sa.terminal.connection.skipServiceAccounting=1 # Устройства, сессии с которых будут обрабатываться командами onAccountingStart/onAccountingStop #sa.terminal.connection.deviceIds= # Ограничение на количество одновременных подключений (обычно максимально возможное кол-во - это ((кол-во дочерних устройств этого устройства) + 1), но не более 100) #sa.terminal.semaphorePermits=0 # Фильтр по опциям (можно использовать отдельную ветку) #sa.inetOption.root= |
...
- ip() - IP-адрес сессии или IP-адрес сервиса или начало диапазона IP-адресов сервиса;
- iplistipList() - список IP-адресов диапазона сервиса, через запятую с пробелом, например 192например: 192.168.1.1, 192.168.1.2, 192.168.1.3, 192.168.1.4, 192.168.1.5, ... ;
- ipList(',') - список IP-адресов диапазона сервиса, через запятую, например: 192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5,... ;
- net() - подсеть сервиса в виде строки, например, 192.168.1.1/24;
- mask() - маска подсети сервиса, например, 24;
- netmask() - маска подсети сервиса, например, 255.255.255.0;
- netmaskWildcard() - wildcard подсети, например, 0.0.0.255;
- ipNetHostMin() - первый адрес подсети, например, 192.168.1.1;
- ipNetHostMax() - последний адрес подсети, например, 192.168.1.254;
- ipNetBroadcast() - 192.168.1.255;
- ipFrom() - первый адрес диапазона сервиса;
- ipTo() - последний адрес диапазона сервиса;
- contractId() - ID договора
- contractTitle() - название договора
- servId() - ID сервиса договора
- servTitle() - название сервиса договора
- servDeviceId() - ID устройства, к которому привязан сервис договора
- vlan() - VLAN сервиса
- svlan() - SVLAN устройства данного обработчика;
- svlan(id_устройства) - SVLAN устройства с указанным ID;
- svlan(servDeviceId()) - SVLAN устройства сервиса;
- iface() - интерфейс сервиса
- ifaceTitle() - название интерфейса сервиса
- ifaceTitleBeforeColon() - название интерфейса до символа ':'
- ifaceTitleAfterColon() - название интерфейса после символа ':'
- mac() - MAC-адрес, в виде 0a:1b:2c:3d:4e:5f
- macBytes() - MAC-адрес, в виде 0a1b2c3d4e5f
- macDoted() - MAC-адрес, в виде 0a1b.2c3d.4e5f
- identifier() - идентификатор сервиса
- servParam(имя_параметра) - параметр сервиса
- servParam(имя_параметра, значение_по_умолчанию) - параметр сервиса
- option() - возвращает активную опцию (используя фильтр sa.inetOption.root, если он установлен);
- option(id_опции) - возвращает активную опцию, которая будет потомком к указанной id_опции (т.е. таким образом можно отфильтровать до опции из определенной подгруппы);
- param(опция, имя_параметра, значение_по_умолчанию) - параметр конфигурации опции (или одного из предка опции, т.к. параметры наследуются) или значение_по_умолчанию, если опция==null или параметр в опции не указан;
- param(имя_параметра, значение_по_умолчанию) - параметр конфигурации устройства (или одного из предка устройства, т.к. параметры наследуются) или значение_по_умолчанию, если параметр в устройстве не указан;
- ipGate() - шлюз из IP-ресурса
- ipDns() - DNS из IP-ресурса
- ipSubnetMask() - маска подсети из IP-ресурса
- ipParam(имя_параметра) - параметр из конфигурации IP-ресурса
- deviceId() - ID устройства данного обработчика;
- deviceIP() - IP-адрес устройства (из поля Хост/порт) данного обработчика;
- deviceIP(id_устройства) - IP-адрес устройства (из поля Хост/порт) с указанным ID;
- deviceIdentifier() - идентификатор устройства данного обработчика;
- deviceIdentifier(id_устройства) - идентификатор устройства с указанным ID;
- deviceIdentifier(servDeviceId()) - идентификатор устройства сервиса;
- deviceAttr(id_атрибута) - значение атрибута устройства данного обработчика;
- deviceAttr(id_устройства, id_атрибута) - значение атрибута устройства с указанным ID;
- deviceAttr(id_устройства, id_атрибута, значение_по_умолчанию) - значение атрибута устройства с указанным ID, если значения нет - возвращается значение по умолчанию;
- connectionAgentDeviceId() - ID агентского устройства, к которому привязано соединение;
- connectionDeviceId() - ID устройства, к которому привязано соединение;
- translit(строка) - транслитерированное значение агрумента;
- format(шаблон, арг1, ...) - форматирование, используя java.text.MessageFormat.format(String, Object...);
- now() - текущее время, например, ${format('{0,date,yyyy}', now())} ;
- nowString() - текущее время, в формате dd.MM.yyyy HH:mm:ss ;
- setEndSequence(строка) - установка последовательности для ожидания приглашения ввода новой команды;
- newState() - новое (требуемое) состояние сервиса/сессии;
- oldState() - старое (текущее) состояние сервиса/сессии;
- mikrotikLastIds() - результаты вызова предыдущей команды (для Mikrotik, все параметры id, через запятую)
loopServ(имя_параметра_шаблона_команды, использовать_в_цикле_родительский_сервис, выполять_как_отдельную_команду_или_построить_строку) - способ выполнения команд с использованием дочерних сервисов; выполняется цикл для всех дочерних сервисов, а также для родительского, если второй агрумент равен true; шаблоном команды является значение параметра, имя которого прописано в первом агрументе; выполняются как отдельные команды (true) или возвращается конкатенированная строка с указанным разделителем
Блок кода language groovy m_ipLoop=${net()} sa.commandSet.staticIP.serv.create.1=/queue/simple/remove\n=numbers=${contractId()}:${servId()} sa.commandSet.staticIP.serv.create.2=/queue/simple/add\n=name=${contractId()}:${servId()}\n=target=127.0.0.1/32,${loopServ('m_ipLoop', false, ',')}
...
Блок кода | ||||
---|---|---|---|---|
| ||||
# После выполнения команд создания сервиса вызываем команды включения сервиса (serv.enable=) и опций (inetOption.x.enable=), если сервис должен быть включен # или команды выключения сервиса (serv.disable=), если сервис должен быть отключен sa.terminal.serv.create.after=${(newState()==1)?(serviceEnable()+optionsEnable()):serviceDisable()} # Перед выполнением команд изменения сервиса (serv.modify=), если произошло включение сервиса - вызываем команды включения сервиса (serv.modify.enable=) и опций (inetOption.x.enable=) sa.terminal.serv.modify.before=${(newState()==1&&oldState()!=1)?(serviceEnable()+optionsEnable()):''} # после (serv.modify=), если произошло отключение сервиса - сначала отключаем опции (inetOption.x.disable=), затем - сервис (serv.modify.disable=); # иначе, если переключения состояния нет - вызываем переключение опций (inetOption.x.disable= и (inetOption.x.enable=)) sa.terminal.serv.modify.after=${(newState()!=1)?(optionsDisable()+serviceDisable()):''};${(newState()==1&&oldState()==1)?(optionsSwitch()):''} # Перед удалением сервиса вызываем команды отключения опций и отключения сервиса sa.terminal.serv.cancel.before=${optionsDisable()+serviceDisable()} # Перед выполнением команд изменения соединения, если произошло включение сервиса - вызываем команды включения сервиса и опций sa.terminal.connection.modify.before=${(newState()==1&&oldState()!=1)?(connectionEnable()+optionsEnable()):''} # после, если произошло отключение соединения - сначала отключаем опции, затем - соединение; иначе, если переключения состояния нет - вызываем переключение опций для соединения sa.terminal.connection.modify.after=${(newState()!=1)?(optionsDisable()+connectionDisable()):''};${(newState()==1&&oldState()==1)?(optionsSwitch()):''} # Перед выполнением команд старта соединения (sa.terminal.connection.onAccountingStart), если соединение должно быть отключено - выполняем команды # отключения (sa.terminal.connection.modify.disable), иначе - выполняем команды включения (sa.terminal.connection.modify.enable) sa.terminal.connection.onAccountingStart.before=${(newState()!=1)?(connectionDisable()):(connectionEnable())} # После выполнения команд старта соединения, если соединени включено - вызываем команды включения опций соединения sa.terminal.connection.onAccountingStart.after=${(newState()==1)?(optionsEnable()):''} # Перед выполнением команд стопа соединения (sa.terminal.connection.onAccountingStop), если соединение было включено - вызываем команды отключения опций sa.terminal.connection.onAccountingStop.before=${(oldState()==1)?(optionsDisable()):''} |
...