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