Ad Widget

Collapse

Экранирование символов при передаче вне&

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dgorobets
    Junior Member
    • Jul 2015
    • 8

    #1

    Экранирование символов при передаче вне&

    Добрый день.

    Не могу понять как правильно экранировать символы при передаче параметров скрипту:
    quartz_scheduler_check1.py[-n cluster-app1 -k 26de5adf-f19f-4f2d-b3b0-ebfcc37820db -j ReceiveMailTask$4 -t c2c23f92-e4a5-4ed4-8dce-8fb1b55e198b]

    Ощущение, что всё валится на символе $ в параметре -j ReceiveMailTask$4.
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Где экранировать, что такое $4 - только вы знаете.

    Нам для гадания нужна фотография элемента данных в развернутом виде.

    Comment

    • Zentarim
      Senior Member
      • Mar 2012
      • 526

      #3
      Originally posted by dgorobets
      Добрый день.

      Не могу понять как правильно экранировать символы при передаче параметров скрипту:
      Quartz_scheduler_check1.py[-n cluster-app1 -k 26de5adf-f19f-4f2d-b3b0-ebfcc37820db -j receivemailtask$4 -t c2c23f92-e4a5-4ed4-8dce-8fb1b55e198b]

      Ощущение, что всё валится на символе $ в параметре -j receivemailtask$4.
      Попробуйте экранировать либо двойным спецсимволом ($$ вместо $) или символом "\"

      Comment

      • dgorobets
        Junior Member
        • Jul 2015
        • 8

        #4
        Скриншот элемента данных прикрепил.

        В поле ключ указано значение: quartz_scheduler_check1.py[-n cluster-app1 -k 26de5adf-f19f-4f2d-b3b0-ebfcc37820db -j ReceiveMailTask$4 -t c2c23f92-e4a5-4ed4-8dce-8fb1b55e198b]

        Скрипт должен принять корректно все параметры, но валится на символе "$". Символ экранирования "\" и двойной символ "$" проблему не решили.
        Attached Files

        Comment

        • sadman
          Senior Member
          • Dec 2010
          • 1611

          #5
          Я вот сейчас в документацию посмотрел и нашел, что для внешних скриптов используется формат, использующий закавычивание и запятые: check_oracle.sh["-h","{HOST.CONN}"]

          ...и $4 - это составная часть значения параметра или вы макросы пытаетесь применять?
          Last edited by sadman; 08-07-2015, 18:41.

          Comment

          • dgorobets
            Junior Member
            • Jul 2015
            • 8

            #6
            $4 - составная часть параметра, переделал на:
            quartz_scheduler_check1.py["-n", "cluster-app1", "-k", "26de5adf-f19f-4f2d-b3b0-ebfcc37820db", "-j", "ReceiveMailTask$4", "-t", "c2c23f92-e4a5-4ed4-8dce-8fb1b55e198b"] и всё равно символ "$" не передаётся, с знаком экранирования тоже не работает.

            Comment

            • dgorobets
              Junior Member
              • Jul 2015
              • 8

              #7
              Ни у кого нет идей как правильно экранивароть символ $ в поле ключ для внешних проверок?

              Comment

              • Zentarim
                Senior Member
                • Mar 2012
                • 526

                #8
                Раз ни у кого нет идей - попробуйте на багтрекер скинуть. Некоторые баги zabbix как раз связаны с неверной передачей спецсимволов между его компонентами или всяческих ограничений на максимальную длину.

                P.S. А попробуйте для кучи закрыть параметры одинарными кавычками вместо двойных.

                Comment

                • dgorobets
                  Junior Member
                  • Jul 2015
                  • 8

                  #9
                  Одинарный кавычки тоже не помогли. Подтвердилось, что данное поведение является багом.

                  Comment

                  • Zentarim
                    Senior Member
                    • Mar 2012
                    • 526

                    #10
                    Теперь надо голосовать за этот баг. Чисто теоретически, чем больше наголосуют и нафлеймят в обсуждении - тем больше привлекут внимание и, возможно, раньше поправят.

                    Comment

                    • dgorobets
                      Junior Member
                      • Jul 2015
                      • 8

                      #11
                      Проблему можно решить, изменив двойные кавычки на одинарные в файле src/zabbix_server/poller/checks_external.c
                      Code:
                      zbx_snprintf_alloc(&cmd, &cmd_alloc, &cmd_offset, " \"%\"'", param_esc);
                      на
                      Code:
                      zbx_snprintf_alloc(&cmd, &cmd_alloc, &cmd_offset, " '%s'", param_esc);
                      После этого скомпилировать и установить.

                      Comment

                      Working...