Операции

В этой секции можно задать набор предопределённых действий, которые могут выполняться при возникновении следующих событий:

Событие запуска и результат выполнения операции записываются в журнал с указанием времени и инициатора.
image

Операции могут быть использованы для:

  • изменения состояния управляемого объекта/связи,

  • изменения параметров управляемого объекта/связи,

  • получения данных от управляемого объекта (параметры, конфигурация, версия ПО и т.д.),

  • загрузка новой версии ПО на управляемый объект.

Секция доступна только пользователям с правами на выполнение операций.

Добавлять, редактировать и удалять операции могут пользователи с правами на управление операциями.

Кнопки управления:

image - выполнить операцию;

image - изменить операцию;

image - удалить операцию.

Для создания новой операции необходимо нажать кнопку image.

Существуют два типа операций, в зависимости от выбора которых изменяются поля для заполнения:

Описание полей:

Поле Описание в программе / скрипте Описание в MQTT

Имя

Имя операции, отображаемое в web-интерфейсе.

Тип

Выпадающий список с доступными типами операций.

Подтип

Выпадающий список с доступными подтипами:

  • Программа/скрипт в ФС - ранее созданный файл, который хранится в файловой системе сервера.

    • Указывается имя программы или путь к скрипту.

  • Скрипт из репозитария - скрипт, созданный и добавленный в репозитарий системы ранее.

    • Выбирается сохранённый скрипт из выпадающего списка.

  • Скрипт с указанным текстом - ручной ввод текста скрипта.

    • Вводится текст скрипта.

Аргументы

Выпадающий список, где задаются аргументы, с которыми будет запущен скрипт.

Топик

MQTT-топик для отправления сообщения.

Сообщение

Текст MQTT-сообщения.

Описание

Пояснение к операции.

Показать результаты во всплывающем сообщении

Если переключатель установлен в положение ДА, при выполнении операции отобразится всплывающее окно в браузере, в котором указываются:

  • имя операции,

  • путь к объекту в иерархии,

  • результат выполнения операции.

image

Окно закрывается при нажатии кнопки image в правом верхнем углу окна или при обновлении страницы.

Всплывающее окно доступно только для операций, запущенных вручную. Для операций, выполненных по триггеру, результаты не выводятся.

В операциях можно использовать следующие переменные:

  • {{id}} – идентификатор объекта, в котором запущена операция;

  • {{properties.имя_свойства}} – значение свойства объекта, в котором запущена операция (в переменной указывается имя свойства);

  • {{jobId}} – идентификатор запущенной операции;

    Идентификатор уникален для каждого запуска - подробности в документации по REST API.
  • {{user.id}} – идентификатор пользователя, который запустил операцию;

  • {{user.login}} – логин пользователя, который запустил операцию.

Данные переменные можно использовать в:

  • топике и сообщении операций типа MQTT-сообщение;

  • скрипте операций типа Выполнение программы/скрипта - Скрипт с указанным текстом.

Запрос аргументов операции у пользователя

Перед выполнением операции у пользователя можно запросить аргументы, которые будут передаваться в скрипт. Для этого в скрипте нужно указать макрос {{ask.имя_аргумента}}.

Для операций подтипа "Программа/скрипт в ФС" и "Скрипт из репозитария" этот макрос можно добавлять только в поле "Аргументы". Для подтипа "Скрипт с указанным текстом" {{ask.имя_аргумента}} можно указывать как в списке "Аргументы", так и в теле скрипта.

Запрос аргументов работает только для операций типа "Выполнение программы / скрипта". Для операций типа "MQTT-сообщение" макрос {{ask.имя_аргумента}} заменяется на пустую строку.

Например, операция, которая вызывает следующий скрипт, запросит у пользователя, который её запустил, переменные packets_count и ip_address:

#!/bin/bash

ping -c {{ask.packets_count}} {{ask.ip_address}}

При запуске этой операции, система покажет пользователю следующее окно, в котором он сможет ввести значения переменных packets_count и ip_address:

argument prompt

Также этот макрос можно использовать в поле "Аргументы":

arguments list ask

Для того, чтобы пример выше мог работать с аргументами, его нужно модифицировать следующим образом:

#!/bin/bash

ping -c "$1" "$2"