Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support
  3. Script error at automatic apply rule - Bad arithmetic conversion

Script error at automatic apply rule - Bad arithmetic conversion

Scheduled Pinned Locked Moved Support
3 Posts 2 Posters 47.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S
    S
    Spheron
    wrote on last edited by
    #1

    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

    1 Reply Last reply
    0
    • V
      V
      Victor Kirhenshtein
      wrote on last edited by
      #2

      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

      1 Reply Last reply
      0
      • S
        S
        Spheron
        wrote on last edited by
        #3

        Hello Victor,

        thanks for the clarification.

        Greetings
        Marco

        1 Reply Last reply
        0

        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
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        • Login

        • Don't have an account? Register

        • Login or register to search.
        Powered by NodeBB Contributors
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups