Ad Widget

Collapse

Как вытащить X из item[X] с помощью макроса

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • i.kulagin
    Member
    • Aug 2011
    • 35

    #1

    Как вытащить X из item[X] с помощью макроса

    Доброго времени суток.
    Мониторится состояние нескольких виндовых сервисов. Есть желание автоматизировать процесс их перезапуска в случае, если сервис остановился/не стартанул после перезагрузки. Делать это предполагаю с помощью выполнения удаленной команды: net start "{ИМЯ_СЕРВИСА}". И вот теперь, вопрос: как получить ИМЯ_СЕРВИСА из источника данных типа service_state[ИМЯ_СЕРВИСА], что бы написать всего одно действие для всех сервисов, а не писать свой action для каждого. Есть ли такой макрос в Zabbix? Если нет, можно ли написать свой для такого случая?
    И еще вопрос появился. Если у меня две удаленных команды подряд, нужно ли делать какие-то дополнительные телодвижения? Ну, например,
    net stop "ИМЯ_СЕРВИСА"
    net start "ИМЯ_СЕРВИСА"
    Пройдет ли такой вариант? Или что-то вроде такого соорудить:
    net stop "ИМЯ_СЕРВИСА"
    ping -n 10 127.0.0.1 > null
    net start "ИМЯ_СЕРВИСА"
    Last edited by i.kulagin; 01-09-2011, 14:11. Reason: Еще вопросик дописал :)
  • i.kulagin
    Member
    • Aug 2011
    • 35

    #2
    zalex_ua
    Наглость, конечно, но может Вы сможете подсказать? ОЧЕНЬ не хочется писать полста action'ов на каждую службу.

    Comment

    • i.kulagin
      Member
      • Aug 2011
      • 35

      #3
      В общем, решения в лоб не нашел. Обошел таким образом - у триггеров, которые срабатывают при падении сервиса, в комментариях прописал имя виндовой службы, которая мониторится, а затем использовал макрос {TRIGGER.COMMENT}. Соответственно, команда для удаленного хоста выглядит так: net start {TRIGGER.COMMENT}.

      Comment

      • gescheit
        Senior Member
        • Jul 2007
        • 156

        #4
        может {item.name1} использовать?

        Comment

        • i.kulagin
          Member
          • Aug 2011
          • 35

          #5
          {item.name[1-9]} возвращает, что логично, имя источника данных. Хотя зачем там [1-9] мне не понятно. Попробовал нарисовать команду с разными циферками. Возвращает одно и тоже - имя источника данных.

          Comment

          • gescheit
            Senior Member
            • Jul 2007
            • 156

            #6
            1-9 - это номер источника данных в тригере. {trigger.key1} тогда

            Comment

            • i.kulagin
              Member
              • Aug 2011
              • 35

              #7
              Тоже нет. Возвращает N-ый элемент, полностью. Например, service_state[wuauserv], в то время как нужно лишь wuauserv.

              Comment

              • gescheit
                Senior Member
                • Jul 2007
                • 156

                #8
                Ну так можно вырезать ненужное.

                Comment

                • i.kulagin
                  Member
                  • Aug 2011
                  • 35

                  #9
                  А можно немного попдробнее, пожалуйста. В шелле это сделать не проблема, а вот как тут - не представляю.

                  Comment

                  • gescheit
                    Senior Member
                    • Jul 2007
                    • 156

                    #10
                    bat скрипт + http://gnuwin32.sourceforge.net/packages/sed.htm

                    Comment

                    • i.kulagin
                      Member
                      • Aug 2011
                      • 35

                      #11
                      Ну если эту задачу рассматривать просто как "вырезать необходимый текст из выражения", то это не проблема. Однако, это следует рассматривать в контексте создания макроса. Я, если честно, с трудом представляю как в этом может помочь sed для windows. Можно для тупых с примерами?
                      Last edited by i.kulagin; 14-09-2011, 20:31.

                      Comment

                      Working...