Если запустить скрипт на ноде, то:
bytestream->seek(xxx) позволяет указать, с какого байта мы хотим читать. При создании byte stream будет стоять на 0, так что bytestream->seek(0); делать и не нужно.
Тут мы прочитали один байт. Можно прочитать и сразу два:
println(bytestream->readUInt32B());
или
println(bytestream->readUInt32L());
смотря как они там идут - как Little Endian или Big Endian.
Ну и стоит проверить, что bytestream->size достаточной длины, чтоб в нем два байта поместилось.
Судя по описанию там каждый бит сообщает о каком-то состоянии. Нужен ли пример разбора по битам?
------
В документации bytestream не описан, будем потихоньку добавлять. Но информацию об NXSL классах можно добыть прямо в скрипте, это может помочь разобраться:
Code Select
transport = $node->createSNMPTransport();
if (transport == null) exit;
value = transport->get(".1.3.6.1.2.1.25.3.5.1.2.1");
if (value == null) exit;
bytestream = value->getValueAsByteStream();
bytestream->seek(0);
println(bytestream->readByte());bytestream->seek(xxx) позволяет указать, с какого байта мы хотим читать. При создании byte stream будет стоять на 0, так что bytestream->seek(0); делать и не нужно.
Тут мы прочитали один байт. Можно прочитать и сразу два:
println(bytestream->readUInt32B());
или
println(bytestream->readUInt32L());
смотря как они там идут - как Little Endian или Big Endian.
Ну и стоит проверить, что bytestream->size достаточной длины, чтоб в нем два байта поместилось.
Судя по описанию там каждый бит сообщает о каком-то состоянии. Нужен ли пример разбора по битам?
------
В документации bytestream не описан, будем потихоньку добавлять. Но информацию об NXSL классах можно добыть прямо в скрипте, это может помочь разобраться:
Code Select
transport = $node->createSNMPTransport();
if (transport == null) exit;
value = transport->get(".1.3.6.1.2.1.25.3.5.1.2.1");
if (value == null) exit;
println("=========================================================");
println("Class: " . classof(value));
println("=== Attributes ===");
for(a : value->__class->attributes)
println(a . " = " . value->__get(a));
println("=== Methods ===");
for(a : value->__class->methods)
println(a);
bytestream = value->getValueAsByteStream();
println("=========================================================");
println("Class: " . classof(bytestream));
println("=== Attributes ===");
for(a : bytestream->__class->attributes)
println(a . " = " . bytestream->__get(a));
println("=== Methods ===");
for(a : bytestream->__class->methods)
println(a);