Ad Widget

Collapse

Создание переменных для Веб мониторинга

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • snakefox
    Junior Member
    • Jan 2023
    • 11

    #1

    Создание переменных для Веб мониторинга

    Здравствуйте.

    Я пытаюсь создать веб мониторинг сайта в несколько шагов. В первом шаге я пытаюсь получить значение для переменной, которую буду использовать во втором шаге.

    Шаг 1.

    http запрос к сайту получает значение:

    {"foo1":"too1","foo2":"too2"}

    Мне нужно достать значение too2 и записать его в переменную для дальнейших шагов.

    Я пробовал использовать конфигурацию переменной, которая указана в документации:

    Имя: {key}
    Значение: regex:name="foo2" content="([0-9a-z]+)(?="})"

    Получил ошибку can not extract value of {key} from response. Я думал, что дело в том, что я не экранировал " и попробовал с экранированным вариантом: regex:name="foo2" content="([0-9a-z]+)(?=\"})", но ошибка так же самая. Попробовал просто ([0-9a-z]+)(?="}) в поле "Значение" - ошибка ушла, но переменная получает не то значение.

    Прошу помочь с определением переменной, или если есть ссылки на инфу/доки/примеры по данной теме, буду тоже очень благодарен.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Смею предположить что вы не разобрались что такое выражение regex: ...
    Вот что в документации
    If the value part starts with regex: then the part after it is treated as a regular expression that searches the web page and, if found, stores the match in the variable. At least one subgroup must be present so that the matched value can be extracted.​
    Т.е. часть после двоеточия - это просто регулярное выражение с хотя бы одной группой значение которой и возьмется.

    Кстати: вы уверены что вам нужен именно этот "веб мониторинг"? С шагами и т.д? Просто есть более продвинутая вещь как элемент данных типа "сценарий" в котором можно всё сделать в JS - к странице обратится \ ответ json получить \ его распарсить и далее использовать ...
    Last edited by Hamardaban; 11-07-2023, 11:35.

    Comment

    • Semiadmin
      Senior Member
      • Oct 2014
      • 1625

      #3
      Originally posted by snakefox

      http запрос к сайту получает значение:

      {"foo1":"too1","foo2":"too2"}

      Мне нужно достать значение too2 и записать его в переменную для дальнейших шагов.
      regex:"foo2":"(\w+)"

      Comment


      • Semiadmin
        Semiadmin commented
        Editing a comment
        Да, согласен. Я потому и написал готовый результат, из которого сразу понятно, как это работает.

      • snakefox
        snakefox commented
        Editing a comment
        эта регулярка поймает результат "foo2":"too2", разве нет? а мне нужно только too2.

      • Semiadmin
        Semiadmin commented
        Editing a comment
        там же группа берется
    • snakefox
      Junior Member
      • Jan 2023
      • 11

      #4
      Originally posted by Hamardaban
      Смею предположить что вы не разобрались что такое выражение regex: ...
      Спасибо, действительно не разобрался.

      Попробовал regex: ([0-9a-zA-Z._]+)(?=(("})|("\n}))) - ошибки ушли (необходимо было добавить еще возможность считывать too2.too2_too2), но значение все равно не то, которое нужно, почему-то (у шага с переменной ответный http код 401, при вводе необходимого значения вручную http 200).

      В регулярном выражении я уверен - я его проверил на regexr.com и работает как надо. Возможно моя проблема при подстановке переменной в заголовок на шаге 2?

      Что должно быть:

      HeaderName: MyWord too2

      Что я подставляю в "Заголовки":

      Имя: HeaderName​​
      Значение:MyWord {key}

      P.S. Насчет сценария - уже думал про это, но я не знаком с JS. Думал через этот вариант будет проще и быстрее.​

      Comment

      • Hamardaban
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • May 2019
        • 2713

        #5
        эта регулярка поймает результат "foo2":"too2", разве нет? а мне нужно только too2.
        регулярка описывает всю эту конструкцию, но группа захвата у нее именно на "значение" - т.е. вывод будет 'too2'

        Comment

        Working...