Ad Widget

Collapse

Помощь с regular Expression

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Apotapushkin
    Junior Member
    • Feb 2014
    • 7

    #1

    Помощь с regular Expression

    Коллеги, добрый день.
    Задача отслеживать службы антивирусов на рабочих станциях под Windows.
    Получаю перечень служб по LLD через UserParameter.
    Zabbix 2.4
    Данные возвращаются в формате JSON
    {
    "{#SCNAME}":"avp",
    "{#SCCAPTION}":"Kaspersky Endpoint Security Service",
    "{#SCSTARTMODE}":"Auto"
    }

    Мониторить нужно только те службы, в названии которых
    содержания в начале и середине одно из слудующих слов
    kaspersky,eset,drweb,avast,panda и т.п.
    Помоите составить Regular Expression для {#SCCAPTION}
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Administration -> General -> Configuration of regular expressions
    Берете "File systems for discovery" и вместо "btrfs" ставите "kaspersky", "ext2" меняете на eset и так далее.

    Comment

    • Apotapushkin
      Junior Member
      • Feb 2014
      • 7

      #3
      Проблема в том,что если через Administration -> General -> Configuration of regular expressions задаю переменную @AvirService
      .*(Kaspersky|Panda|Avast) [Result is TRUE] и подставляю в фильтр {#SCCAPTION} @AvireService, правило не находит ни одной службы.
      Если подставляю в фильтр {#SCCAPTION} .*(Kaspersky|Panda|Avast) (без переменной), службы находятся.
      zabbix agent 2.4.4
      zabbix server 2.4.0

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #4
        Что-то я в регекспе знаками .* не пользовался ни разу. Что они обозначают и зачем вам нужны?

        Comment

        • Apotapushkin
          Junior Member
          • Feb 2014
          • 7

          #5
          Дело не в .* или ^. На вкладке Administration -> General -> Configuration of regular expressions- test проверка проходит.
          Проблема в фильтре в Discovery Rules.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Запутали вы меня.
            Т.е.
            В .. -> Configuration of regular expressions @AvireService => {#SCCAPTION}=(Kaspersky|Panda|Avast) , Result is TRUE.
            Тест при настройке правила проходит, но если ссылаетесь на него в Disсovery - отбора не происходит?

            Однако, при прямом указании в фильтре Discovery {#SCCAPTION}=(Kaspersky|Panda|Avast) отбираются нужные узлы.

            Я правильно понимаю?

            Comment

            • Apotapushkin
              Junior Member
              • Feb 2014
              • 7

              #7
              Originally posted by sadman
              Запутали вы меня.
              Т.е.
              В .. -> configuration of regular expressions @avireservice => {#sccaption}=(kaspersky|panda|avast) , result is true.
              Тест при настройке правила проходит, но если ссылаетесь на него в disсovery - отбора не происходит?

              Однако, при прямом указании в фильтре discovery {#sccaption}=(kaspersky|panda|avast) отбираются нужные узлы.

              Я правильно понимаю?
              Все верно.

              Comment

              • pzabortsev
                Senior Member
                • Dec 2012
                • 338

                #8
                поиграйтесь с case sensitive

                Comment

                • sersad
                  Senior Member
                  • May 2009
                  • 518

                  #9
                  в доке есть пример тестирования регэкспа, упражняйтесь и проверяйте.



                  The filter can be used to only generate real items, triggers, and graphs for certain file systems. It expects POSIX Extended Regular Expression. For instance, if you are only interested in C:, D:, and E: file systems, you could put {#FSNAME} into “Macro” and "^C|^D|^E" regular expression into “Regexp” text fields. Filtering is also possible by file system types using {#FSTYPE} macro (e. g. "^ext|^reiserfs").
                  You can enter a regular expression or reference a global regular expression in “Regexp” field.
                  In order to test the regular expression you can use “grep -E”, for example:

                  for f in ext2 nfs reiserfs smbfs; do echo $f | grep -E '^ext|^reiserfs' || echo "SKIP: $f"; done

                  Note that if some macro from the filter is missing in the response, the found entity will be ignored.

                  Comment

                  Working...