Good evening,
I have noticed these two operators which aren't in the documentation and would like some clarification on their use.
One of them is a single dot. Based on usage, it appears to be used to concatenate strings? From the Wiki page Script Example: Read SNMP Value From Node (https://wiki.netxms.org/wiki/Script_Example:_Read_SNMP_Value_From_Node):
value = SNMPGetValue(transport, ".1.3.6.1.2.1.1.1.0");
if (value == null)
{
println "Failed to issue SNMP GET request";
return 2;
}
else
{
println "System description: " . value; // This dot
return 0;
}
The other one is this which I've seen in a number of places, including the built-in scripts: -> Example from Filter::AgentOrSNMP:
return $1->isAgent || $1->isSNMP;
I can see that it's referencing the capabilities of the node, but when I try to do this, the script fails, and NetXMS logs an event with description "error 15 in line 5: uknown object's attribute." On this one, I'm trying to filter out some printers and a few other devices with SNMP that I don't want it to discover. What I was going for on the line causing the error is return true for a device that has SNMP, and also is either running spanning-tree or is a router. Maybe there's a better way to do this. It's my first attempt.
As best I can figure, $1->isSNMP returns true if the discovered node $1 has that capability, but I couldn't find this -> operator in the documentation.
// Select any device running the NetXMS agent,
// or any node with SNMP that matches criteria.
if ($1->isAgent) {exit 1;}
if ($1->isSNMP && ($1->isSTP || $1->isRouter)) {exit 1;}
exit 0;
Thanks
"." is indeed string concatanation.
It's shown and explained (along with others base NXSL concepts) here:
https://wiki.netxms.org/wiki/UM:NetXMS_Scripting_Language_(NXSL)
"->" is used to access members of an object
(attributes or functions)
You can find more details here:
https://wiki.netxms.org/wiki/NXSL_Class_Reference
"error 15 in line 5: uknown object's attribute." means that the object you are referencing doesn't have the member you specified.
Okay, thanks for that info. I can see from https://wiki.netxms.org/wiki/NXSL:Node (https://wiki.netxms.org/wiki/NXSL:Node) that isRouter is a node attribute, but isSTP is not... I put that in based on what I saw in the below image. I see most of those things are available attributes, but not isSTP. I'll have to try another approach.
I can probably accomplish what I need to do for the moment based on the driver or sysDescription attributes, but for future reference, can I pull SNMP values from the newly discovered node like this and use it to filter them? https://wiki.netxms.org/wiki/Script_Example:_Read_SNMP_Value_From_Node (https://wiki.netxms.org/wiki/Script_Example:_Read_SNMP_Value_From_Node)
Hi,
we somehow missed isSTP flag. Just added it to node class, will be available in 2.2.3 release.
Best regards,
Victor