Script error at automatic apply rule - Bad arithmetic conversion
-
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! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login