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)
11 Posts 3 Posters 14.8k 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.
  • V
    V
    Victor Kirhenshtein
    wrote on last edited by
    #2

    Ошибка вызвана скорее всего тем, что какой-то из вызовов FindObject возвращает NULL. А какое значение у конфигурационного параметра CheckTrustedNodes (см. здесь почему это важно: http://wiki.netxms.org/wiki/SG:Security_Issues).

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

      @victor said in Автобинд в контейнеры:

      Ошибка вызвана скорее всего тем, что какой-то из вызовов FindObject возвращает NULL. А какое значение у конфигурационного параметра CheckTrustedNodes (см. здесь почему это важно: http://wiki.netxms.org/wiki/SG:Security_Issues).

      CheckTrustedNodes = 1

      спасибо поэкспериментирую с 0

      1 Reply Last reply
      0
      • S
        S
        SKYnv
        wrote on last edited by
        #4

        и так CheckTrustedNodes = 0

        такой скрипт висит в правилах автобинда на контейнер. отрабатывает без ошибок (они не сыплятся в алярмы)

        sub main()
        {
        BindObject(FindObject(36420),FindObject(3718));
        BindObject(FindObject(36420),FindObject(2218));
        }

        реакции 0
        выполняю через exec в консоли сервера, ноды биндятся на контейнер мгновенно.

        udp
        странно, а после перезапуска сервера добавляет мгновенно... правда из классической консоли.

        udp
        да, если писать в ява консоли правила для автобинда в контейнер это не оказывает никакого эффекта. Если из классической, то все отрабатывает мгновенно. Другое дело что в классической нет галки на анбинд при несовпадении...

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

          Автобинд скрипты на контейнерах работают немного по другому - там не надо вызывать BindObject. Автобинд скрипт контейнера вызывается для каждой ноды во время configuration poll, и должен вернуть TRUE если ноду надо добавить в контейнер, и FALSE если нет. Функция BindObject задумывалась для скриптов, которые вызываются в других местах - например как реакция на событие.

          1 Reply Last reply
          0
          • S
            S
            SKYnv
            wrote on last edited by
            #6

            @victor said in Автобинд в контейнеры:

            Автобинд скрипты на контейнерах работают немного по другому - там не надо вызывать BindObject. Автобинд скрипт контейнера вызывается для каждой ноды во время configuration poll, и должен вернуть TRUE если ноду надо добавить в контейнер, и FALSE если нет. Функция BindObject задумывалась для скриптов, которые вызываются в других местах - например как реакция на событие.

            то есть достаточно будет?

            sub main()
            {
            findobject(123);
            findobject(435);
            }

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

              Нет, не так. Автобинд скрипты задуманы для добавления нод в контейнеры по определенным признакам. Например, я хочу собрать в контейнер все Windows хосты с агентами. Тогда автобинд скрипт будет выглядеть так:

              return $node->isAgent && ($node->platformName like "windows-*");
              
              1 Reply Last reply
              0
              • S
                S
                SKYnv
                wrote on last edited by
                #8

                @victor said in Автобинд в контейнеры:

                Нет, не так. Автобинд скрипты задуманы для добавления нод в контейнеры по определенным признакам. Например, я хочу собрать в контейнер все Windows хосты с агентами. Тогда автобинд скрипт будет выглядеть так:

                return $node->isAgent && ($node->platformName like "windows-*");
                

                или как я понимаю

                return $node->isSNMP && ($node->ipAddr like "192.168.1.10");
                

                похоже что
                BindObject(FindObject(36420),FindObject(3718)); в скриптах автобинда временами убивает сервер.

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

                  @skynv said in Автобинд в контейнеры:

                  или как я понимаю

                  return $node->isSNMP && ($node->ipAddr like "192.168.1.10");
                  

                  Да. Для точного сравнения можно == использовать:

                  return $node->isSNMP && ($node->ipAddr == "192.168.1.10");

                  Ну и есть две полезные функции: http://wiki.netxms.org/wiki/NXSL:AddrInSubnet и http://wiki.netxms.org/wiki/NXSL:AddrInRange.

                  1 Reply Last reply
                  0
                  • G
                    G
                    glebofff
                    wrote on last edited by
                    #10

                    Приветствую. Чтобы темы не плодить, пишу здесь.

                    Узел, по которому выполняется скрипт - $node. А как узнать контейнер, к которому пытаемся биндить испытуемый узел?

                    Мне нужно перебрать Custom Attributes контейнера (как, кстати, по ним сделать итерацию?), и на основе определённых значений уже принять решение, подходит узел или нет.

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

                      Автобинд скрипт - это атрибут контейнера, и всегда выполняется только для того контейнера, в котором определен. Если вы используете общий скрипт из библиотеки, то при вызове из каждого конкретного контейнера можно передавать его имя или идентификатор как параметр. Перебрать все custom attributes нельзя, надо знать их имена.

                      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