Работа с Linux-командами Атомов

В этой статье описаны основные команды API, которые позволяют взаимодействовать с Linux-системами через панель администратора. С помощью этих команд можно отправлять, получать, удалять и просматривать историю команд для Атомов.

Как получить данные

Адрес запроса

Для получения данных используйте адрес: https://<server_address>/backend/api.php

Список команд

  • cmd=atom_get_all — получить список отправленных команд
  • cmd=atom_get_commands — получить список шаблонов команд
  • cmd=atom_create_command —  отправить команду Linux
  • atom_delete_command — удалить команду Linux
 

Получение списка отправленных Linux команд (История команд)

Эта команда позволяет получить список всех команд, отправленных на атом. История включает идентификатор атома, отправленную команду, а также статус выполнения.
Метод: GET

Параметры запроса

  • cmd=atom_get_all — команда для получения истории
  • ident — уникальный идентификатор атома (например, b0:44:6t:0d:a9:04)
  • node — номер узла, на котором нужно выполнить команду
     

    Пример запроса

    https://<server_address>/backend/api.php?cmd=atom_get_all&ident=b0:44:6t:0d:a9:04&node=1
    Ответ
    [
      {
        "id": 27899,
        "agent_id": null,
        "ident": "8v:f5:8c:01:13:70",
        "script": "ls /root/",
        "processed": null,
        "ts": 1712138610,
        "result": null
      }
    ]
     

Получение списка шаблонов команд Linux

Эта команда позволяет получить список шаблонов команд Linux, которые могут быть использованы для отправки на атом. Шаблоны содержат описание и команду, которая будет выполнена на устройстве.
Метод: GET

Параметры запроса

  • cmd=atom_get_commands — команда для получения шаблонов команд.
  • ident — уникальный идентификатор атома (например, 80:c5:80:01:68:08).
  • node — номер узла, на котором нужно выполнить команду

    Пример запроса

    https://<server_address>/backend/api.php?cmd=atom_get_commands&ident=80:c5:80:01:68:08&node=1
    Ответ
    [
      {
        "id": 36,
        "command_name": "Список Видео",
        "description": null,
        "command": "ls -lsh /video/*.avi"
      }
    ]
     

Отправка команды Linux

С помощью этой команды можно отправить команду Linux на атом. Команда будет добавлена в очередь и выполнена на устройстве.
Метод: POST

Параметры запроса

  • cmd=atom_create_command — команда для создания новой команды.
  • ident — уникальный идентификатор атома.
  • script — скрипт команды (опционально).
  • node — номер узла, на котором нужно выполнить команду

    Пример запроса

    https://<server_address>/backend/api.php?cmd=atom_create_command&ident=b1:42:67:00:00:fd&node=1
    Ответ
27917 (ID команды, добавленной в очередь)
 

Удаление команды Linux

Если команда еще не была выполнена, ее можно удалить из очереди с помощью этого метода. Удаление возможно только до того, как команда будет обработана.
Метод: GET

Параметры запроса

  • cmd=atom_delete_command — команда для удаления
  • ident — уникальный идентификатор атома
  • command_id — идентификатор команды для удаления
  • node — номер узла, на котором нужно выполнить команду

    Пример запроса

    https://<server_address>/backend/api.php?cmd=atom_delete_command&ident=b0:44:6f:0d:av:88&command_id=27921
    Ответ
    "Success delete"
     

Коды ошибок API

  • 400 Bad request — неверный формат данных или отсутствует обязательный параметр.
    Возможные сообщения:
  • {"error": "Missing ident param"} — отсутствует идентификатор атома.
  • {"error": "Command already processed"} — команда уже выполнена.
  • {"error": "Unknown macro: {Unknown macro}"} — неизвестная макро-команда.
  • 500 Internal server error — внутренняя ошибка сервера
     

Взаимодействие с командами в интерфейсе

В интерфейсе PILOT взаимодействие с атомами происходит через вкладку административной панели «Автокондуктор → Автобусы», где доступна команда «Взаимодействовать».
Через эту функцию:
  • Отправляются команды (Linux-команды) на атом
  • Можно просматривать список доступных команд (шаблоны)
  • Отображается история всех отправленных команд
  • Доступен результат выполнения каждой команды