Обращения из DCI к Script library, передача аттрибутов

Started by Akira, September 17, 2021, 02:23:40 PM

Previous topic - Next topic

Akira

Какие атрибуты передаются в скрипт?
Мне надо считать в скрипте Description от DCI

Просто в DCI в разделе Transformation, скрипт работает, но хотел его запихнуть в библиотеку скриптов

// Description format - (Tunnel '37.203.240.35' active time)
transport = CreateSNMPTransport($node);

if (transport == null) return -1;  // if no SNMP

oid = ".1.3.6.1.4.1.9.9.171.1.2.3.1.7"; // where IP addresses search

vars = SNMPWalk(transport, oid);  //SNMP walk over OID

if (vars == null) return -2; // SNMPWalk failed

dcidescription = SplitString($dci->description, "'"); // DCI description to array
ipsec = dcidescription[1]; // get tunnel IP from DCI description

foreach (v: vars) { //look over OID tree
  if(v->value == ipsec) {  //if IPSEC ip found
    instances = SplitString(v->name, ".");  //convert OID to array
    instance = instances[instances->size - 1]; //get last instance from OID
    seconds = SNMPGetValue(transport, ".1.3.6.1.4.1.9.9.171.1.2.3.1.16." . instance);  //get number of seconds that tunnel was active
    return SecondsToUptime(seconds / 100);
  }
}

Victor Kirhenshtein

$node - объект ноды с которой происходит сбор данных (https://www.netxms.org/documentation/nxsl-latest/#class-node)
$targetObject - объект ноды для которой происходит сбор данных (будет то-же что и $node если у DCI не выставлен source node)

В $ARGS (и в $1, $2, ...) будут параметры если в DCI скрипт указан со скобками.

Akira

Quote from: Victor Kirhenshtein on September 17, 2021, 03:04:15 PM
$node - объект ноды с которой происходит сбор данных (https://www.netxms.org/documentation/nxsl-latest/#class-node)
$targetObject - объект ноды для которой происходит сбор данных (будет то-же что и $node если у DCI не выставлен source node)

В $ARGS (и в $1, $2, ...) будут параметры если в DCI скрипт указан со скобками.

Честно, не въехал.

Как мне указать скрипт в данном окне DCI, чтобы в скрипте достать потом значение - Tunnel '8.8.8.8' active time

Я понял, что если я вызову скрипт ASA::Test(8.8.8.8), то потом достану как $ARGS[1].

Но мне интересно, как Description DCI получить, если можно

Victor Kirhenshtein

Тогда можно оставить использование transformation, просто скрипт заменить на вызов библиотечного скрипта в форме

return script_name::function();

В вызванном скрипте будет доступна переменная $dci.