Команда 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 } } }