Ad Widget

Collapse

как правильно экранировать кавычки в web.page.regexp?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • DenisBY
    Member
    • Jul 2006
    • 44

    #1

    как правильно экранировать кавычки в web.page.regexp?

    есть урл http://localhost/monitor который выдает
    Code:
    {"status":0}
    как правильно экранировать кавычки в web.page.regexp? если пробую стандартно через \", то получаю [m|ZBX_NOTSUPPORTED] [Invalid item key format.], например:
    Code:
    zabbix_agent -t web.page.regexp[localhost,monitor,80,"\":([0-9])"]
    web.page.regexp[localhost,monitor,80,":([0-9])] [m|ZBX_NOTSUPPORTED] [Invalid item key format.]
    что я делаю не так?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Если эта команда выполняется под Unix/Linux, то кавычки будут, в первую очередь, интерпретироваться шеллом (ещё до передачи агенту). Попробуйте всё значение параметра заэкранировать от шелла апострофами:
    Code:
    zabbix_agent -t [COLOR="blue"]'[/COLOR]web.page.regexp[localhost,monitor,80,"\":([0-9])"][COLOR="blue"]'[/COLOR]

    Comment

    • DenisBY
      Member
      • Jul 2006
      • 44

      #3
      Да, спасибо, помогло. Еще такой вариант заработал:
      Code:
      zabbix_agent -t web.page.regexp[localhost,monitor,80,'\":([0-9])']
      Правда не совсем понимаю, зачем здесь экранировать двойные кавычки если они внутри одинарных. Ведь так работает:
      Code:
      $ echo '"blabla"'
      "blabla"

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #4
        Иначе получается, что у Вас параметр ключа начинается с двойной кавычки, и агент воспринимает этот параметр как "строку, заключённую в кавычки" и, соответственно, ищет парную ей закрывающую кавычку. Не находит, ругается, выдаёт ZBX_NOTSUPPORTED (Invalid item key format).

        Цитата из документации:
        Если параметр ключа это строка, заключенная в кавычки, тогда разрешен любой символ в Юникоде, и если требуется включение двойных кавычек, то они должны быть экранированы обратной наклонной чертой.
        Ваш вариант, который "тоже заработал", работает, но не так как Вы ожидаете, поскольку регулярное выражение, которое Вы передаёте как параметр ключа, содержит закрывающую квадратную скобку. Без внешних двойных кавычек она воспринимается агентом как конец списка параметров, т.е. фактическое регулярное выражение обрезается на два символа:
        Если параметр ключа это строка без кавычек, тогда разрешен любой символ в Юникоде, за исключением запятой и правой квадратной скобки (]).

        Comment

        Working...