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 (Russian)
  3. Отключение агентов

Отключение агентов

Scheduled Pinned Locked Moved Support (Russian)
6 Posts 2 Posters 25.4k 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.
  • A
    A
    andrey--k
    wrote on last edited by
    #1

    У меня следующий скрипт пропадает при раскомментировании строки с "// o->flags += 33554432;"

    sub EnumerateNodes(rootObject)
    {
    	//trace(1, "  will disable " . rootObject->name);
        // Walk all child objects
        foreach(o : GetObjectChildren(rootObject))
        {
            if (classof(o) == "Node")
            {
                // Process node object
             //   trace(1, "  + " . o->name);
                if (o->name != "localhost") {
                	if (o->flags < 33554432) {
                	// Error if next will be uncommented
                	//	o->flags += 33554432;
                	 	trace(1, "  disabled " . o->name . "   " . o->flags);
    					}
                } else {
    	         //   trace(1, " IS SERVER " . o->name);
    	         }
            }
            else if (classof(o) == "NetObj")
            {
                // For all other objects, go down the tree
                // There can be additional checks for object class, like
                // if (o->type == 5)
                EnumerateNodes(o);
            }
        }
    }
    
    EnumerateNodes(FindObject(1));
    

    Ошибка:

    $ nxadm -c "exec DisableAgent"
    ERROR: Script "DisableAgent" not found
    

    Не могу понять в чем проблема... 😞

    Как временное решение - через БД (при остановленном netxmsd):

    select NODE_FLAGS from nodes
    where NODE_FLAGS < 33554432
    and PRIMARY_IP != '127.0.0.1';
    update nodes set NODE_FLAGS = NODE_FLAGS + 33554432
    where NODE_FLAGS < 33554432 and PRIMARY_IP != '127.0.0.1';
    commit;
    
    1 Reply Last reply
    0
    • V
      V
      Victor Kirhenshtein
      wrote on last edited by
      #2

      Строка

      o->flags += 33554432;

      дает ошибку компиляции, а поскольку команда exec ищет только скомпилированные скрипты, то выдается несколько нелогичное сообщение "script not found".

      Ошибка компиляции на самом деле из-за бага в интерпретаторе NXSL - он не понимает += для аттрибутов объектов.

      o->flags = o->flags + 33554432;

      скомпилируется без ошибок. Кстати, дла выставления и проверки флагов надо использовать битовые операции:

      o->flags = o->flags | 33554432;

      тогда можно не проверять на текущее значение flags.

      Однако главная проблема в том, что сейчас флаги объекта из скриптов менять нельзя (и вообще ничего нельзя) - в NXSL класс Node read-only. Я могу это поменять, но это уже будет в следующем релизе (ну или со снапшота собрать можно будет).

      1 Reply Last reply
      0
      • A
        A
        andrey--k
        wrote on last edited by
        #3

        Наверное не стоит открывать классы на запись, так как ошибок подобных этой вылезет сразу очень много. А если и открывать, то необходимо проверить приведение типов к классам + проверка ошибок при компиляции скриптов...
        Возникает вопрос, как наиболее правильно добавлять подобный функционал? Через API?

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

          Можно добавить функции или методы в NXSL класс для изменения конкретных флажков или аттрибутов (как сделано например сейчас с ManageObject или RenameObject).

          1 Reply Last reply
          0
          • A
            A
            andrey--k
            wrote on last edited by
            #5

            Было бы замечательно.

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

              Добавил новые методы в класс Node: enableAgent, enableConfigurationPoll, enableIcmp, enableSnmp, enableStatusPoll, enableTopologyPoll.
              Теперь в скрипте можно написать

              o->enableAgent(false);

              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