wiki:ApiSnmpget

Version 2 (modified by alx, 2 years ago) ( diff )

--

Команда snmpget

Назначение команды

Команда snmpget служит для запроса значений переменных плат блока MC04-DSL-3U (чтения переменных).

Ключи запроса

Ключ Тип значения обязательный Назначение
cmd строка да "snmpget" - имя команды
varlist массив да список OID запрашиваемых переменных
strings2data логический нет формат возвращаемых значений строк

Команде snmpget требуется параметр "varlist", содержащий массив строк, каждая из которых представляет собой OID запрашиваемой переменной. OID состоит из элементов, представляющих собой число от 0 до 255 с точкой перед ним. При обращении к переменной платы первый элемент OID должен быть равен 4, второй элемент - номеру слота. Элементы OID начиная с третьего являются идентификатором переменной внутри платы. OID должен завершаться элементом 0.

Переменные плат типа "строка" не всегда содержат в себе текст. Часто их значение представляет собой просто набор байтов (например в такой форме в плату могут передаваться ее настройки). Значение таких переменных не всегда может быть представлено в форме текстовой строки (так как не является валидной последовательностью UTF-8). Значения таких переменных может быть возвращено в форме массива байтов. Для этого необходимо указать в запросе параметр strings2data, имеющий значение true. Этот параметр влияет сразу на все переменные, указанные в запросе, если они имеют тип "строка". По умолчанию (при отсутствии в запросе параметра strings2data) значения переменных типа "строка" возвращаются в форме строк (как если бы было указано "strings2data":false). Рекомендуется использовать запросы без параметра strings2data только в тех случаях, когда известно, что значением всех запрашиваемых переменных типа "строка" является текст. В противном случае (если возможно получение нетекстовых бинарных данных) рекомендуется добавлять в запрос параметр "strings2data":true.

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

Запрос названий плат, установленных в слотах 2 и 3:

{"cmd":"snmpget","varlist":[".4.2.2.0", ".4.3.2.0"]} (1)

Запрос переменных .5.4.2.0 и .7.1.1.0 из платы в слоте 17 с возвратом их значений в виде массива байт:

{"cmd":"snmpget","varlist":[".4.17.5.4.2.0", ".4.17.7.1.1.0"],"strings2data":true} (2)

Права доступа

Для выполнения команды snmpget не требуется наличия каких-либо прав.

Возвращаемые данные

В случае успешного выполнения команда snmpget возвращает ключ result, значением которого является объект, содержащий результаты чтения переменных. Ключами объекта result являются OID переменных, которые были переданы в поле varlist запроса. Значением является объект, содержащий результат чтения запрошенной переменной, и имеющий следующий формат:

Ключ Тип значения обязательный Описание
oid строка да OID прочитанной переменной - значение совпадает с ключом объекта result.
status строка да Индикатор успешности чтения данной переменной - см. ниже
value разный нет Значение, прочитанной из переменной. Присутствует только в случае успешного чтения (status == "OK").

Возможные значения поля status:

значение описание
"OK" Чтение переменной выполнено успешно. Прочитанное значение содержится в поле value.
"Not found" Запрошенная переменная отсутствует (неверный OID)
"Access denied" Запрошенная переменная имеет тип "только для записи"
"Timeout" Плата, которая содержит переменную, не ответила на запрос чтения (время ожидания ответа истекло)
"Error" Плата, содержащая запрошенную переменную, вернула ошибку.

Примеры ответов:

Пример ответа на запрос (1):

{
  "cmd":"snmpget",
  "result": {
    ".4.2.2.0": {
      "oid":".4.2.2.0",
      "status":"OK",
      "value":"ST-124"
    },
    ".4.3.2.0": {
      "oid":".4.3.2.0",
      "status":"OK",
      "value":"E1-08"
    }
  }
}

Пример ответа на запрос (2):

{
  "cmd":"snmpget",
  "result": {
    ".4.17.5.4.2.0": {
      "oid":".4.17.5.4.2.0",
      "status":"Not found"
    },
    ".4.17.7.1.1.0": {
      "oid":".4.17.7.1.1.0",
      "status":"OK",
      "value": [1, 25, 6, 45, 0, 0, 215, 43, 23, 23, 0, 1, 0, 0, 255]
    }
  }
}

Примечания

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

Запрос: {"cmd":"snmpget","varlist":[".4.1.5.0", ".4.1.6.0", ".4.1.7.0", ".4.1.8.0", ".4.1.9.0"]}

Ответ:

{
  "cmd":"snmpget",
  "result": {
    ".4.1.5.0": {
      "oid":".4.1.5.0",
      "status":"OK",
      "value": 55
    },
    ".4.1.6.0": {
      "oid":".4.1.6.0",
      "status":"OK",
      "value": 55
    },
    ".4.1.6.0": {
      "oid":".4.1.6.0",
      "status":"OK",
      "value": 66
    },
    ".4.1.7.0": {
      "oid":".4.1.7.0",
      "status":"OK",
      "value": 77
    }
  }
}

Запрос: {"cmd":"snmpget","varlist":[".4.1.8.0", ".4.1.9.0"]}

Ответ:

{
  "cmd":"snmpget",
  "result": {
    ".4.1.8.0": {
      "oid":".4.1.8.0",
      "status":"OK",
      "value": 88
    },
    ".4.1.9.0": {
      "oid":".4.1.9.0",
      "status":"OK",
      "value": 99
    }
  }
}

См. также

команда snmpset

Note: See TracWiki for help on using the wiki.