New DCI source: NXSL script executed on server

Started by ArtKZ, October 22, 2014, 11:03:20 PM

Previous topic - Next topic

ArtKZ

В библиотеке скриптов имеется скрипт, который вызывается из transformation script и которому передаются в качестве аргументов custom attributes объекта. Захотел использовать новую возможность, указал этот скрипт как параметр метрики в виде DCI::NumOfLearnedMAC($node->node,$node->vlan,$node->port). Скрипт завершается со значением -1, говорящим о том, что ему не передаются аргументы.... может их как-то по другому надо указывать?

Ниже сам скрипт

// Count MAC adresses, learned on port of vlan on node
// Arguments: node, vlan, port
// Return number of learned MAC address

sub main() {
return NumOfLearnedMAC($1,$2,$3);
}

sub NumOfLearnedMAC() {
node = FindObject($1);
vlan = $2;
port = $3;

if (node == null)
{
    println "ERROR: Node not found";
    return -1;
}

transport = CreateSNMPTransport(node);    // Create SNMP transport for node
if (transport == null)
{
    println "Failed to create SNMP transport, exit";
    return -1;
}

vars = SNMPWalk(transport, ".1.3.6.1.2.1.17.7.1.2.2.1.2.".vlan);
if (vars == null)
{
    println "Failed to issue SNMP WALK request";
    return -2;
}

ret = 0;
foreach (v: vars) {
  if (v->value == port)
  {
    ++ret;
  }
}

return ret;
}


... и transformation script

use DCI::NumOfLearnedMAC;

sub main() {
return NumOfLearnedMAC($node->node,$node->vlan,$node->port);
}