Hello @all,
i use the following script as automatic apply rule in a template (NetXMS V2.1.2):
if ( (! $node->isAgent) && (! $node->platformName ~= "windows.*") ) return false;
table = AgentReadTable($node, "System.Services");
if ( table == null ) return false;
colName = table->getColumnIndex("NAME");
for (currentRow = 0; currentRow < table->rowCount; currentRow++)
{
if ( table->get(currentRow, colName) == "DNS" ) return true;
}
return false;
Everytime the script is processed automaticly at a node the following event is thrown:
Script (Template::Server Service DNS::730) execution error: Error 4 in line 1: Bad arithmetic conversion
but the script is proccessed correctly.
If i create this script in script library and test the script with "Execute Server Script" with a node, there is no error...
Where is my fault? Thanks for helping me...
Greets
Marco
Hi!
"logical not" operation (!) has higher priority than "match" operation (~=). So your script actually does logical not on text string ($node->platformName) which causes runtime error. It only happens on nodes without agent. You should get match operation in brackets:
(!($node->platformName ~= "windows.*"))
Also, I suspect you have logical error here. You probably want to return false if there is no agent OR platform is not Windows - but current condition uses AND which is pointless - if node has no agent platform name will be empty anyway and won't match anyway.
Best regards,
Victor
Hello Victor,
thanks for the clarification.
Greetings
Marco