Ad Widget

Collapse

Выполнение удаленной команды

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • pzabortsev
    Senior Member
    • Dec 2012
    • 338

    #1

    Выполнение удаленной команды

    Добрый день,

    Как я понял, существуют два способа выполнить произвольную удаленную команду (Remote Command):
    1. Через настройку действия
    2. Созданием элемента с ключем system.run[,nowait]

    В первом случае запуск команды производится по какому-нибудь событию: триггер или обнаружение.
    Во втором случае запуск команды производится с периодом обновления элемента.

    А нет ли способа выполнения команды однократно по запросу?

    PS. Есть еще третий способ запуска через UserParameter. Но в этом случае все команды должны быть заранее описаны, т.е. о произвольности не может идти речь.
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Гугл намекает на
    Code:
    zabbix_get -s HOST_IP -I SERVER_IP -k system.run[cat /etc/passwd]

    Comment

    • pzabortsev
      Senior Member
      • Dec 2012
      • 338

      #3
      Гм... а ведь правда! Спасибо!

      Comment

      • DeamonMV
        Junior Member
        • Apr 2014
        • 13

        #4
        Что бы не создавать лишние темы задам тут.

        Столкнулся с такой проблемой необходимо снимать показания среднего значения ping, выполняю следующей команндой

        ping -c 4 xxx.xxx.xxx.xxx | tail -1| awk '{print $4}' | cut -d '/' -f 2

        поскольку выполнение данной команды больше одной секунды, вставить ее в Userparamet не получится. Заббикс не дождется значения.

        Выполяню эту команду(а именно шеловский скрипт) по крону и результат записываю в в отдельный файл res

        ping -c 4 xxx.xxx.xxx.xxx | tail -1| awk '{print $4}' | cut -d '/' -f 2 > /etc/zabbix/res

        Теперь на этапе когда мне надо вынять значение из файла натыкаюсь на такие грабли:
        случай первый:
        есть UserParameter=ping.average.server,cat /etc/zabbix/res эта команда отрабатывает но есть ньюанс, не всегда я получаю обратно значение, периодически приходит null, насколько я понию, и получется что графики у меня постоянно рваные.

        вот выхлоп логов:

        Code:
        1539:20140403:135448.456 Run remote command [cat /etc/zabbix/res] Result [7] [126.688]...
          1540:20140403:135705.207 In zbx_popen() command:'cat /etc/zabbix/res'
          1540:20140403:135705.229 Run remote command [cat /etc/zabbix/res] Result [7] [121.061]...
          1539:20140403:135758.716 In zbx_popen() command:'cat /etc/zabbix/res'
          1539:20140403:135758.738 Run remote command [cat /etc/zabbix/res] Result [7] [117.824]...
          1539:20140403:135827.438 In zbx_popen() command:'cat /etc/zabbix/res'
          1539:20140403:135827.459 Run remote command [cat /etc/zabbix/res] Result [0] []...
          1538:20140403:135911.598 In zbx_popen() command:'cat /etc/zabbix/res'
          1538:20140403:135911.621 Run remote command [cat /etc/zabbix/res] Result [7] [117.094]...
          1539:20140403:140003.956 In zbx_popen() command:'cat /etc/zabbix/res'
          1539:20140403:140004.002 Run remote command [cat /etc/zabbix/res] Result [0] []...
          1538:20140403:141041.854 In zbx_popen() command:'cat /etc/zabbix/res'
          1538:20140403:141041.899 Run remote command [cat /etc/zabbix/res] Result [7] [141.513]...
          1538:20140403:141137.204 Run remote command [cat /etc/zabbix/res] Result [7] [129.088]...
          1539:20140403:141230.514 In zbx_popen() command:'cat /etc/zabbix/res'
          1539:20140403:141230.562 Run remote command [cat /etc/zabbix/res] Result [7] [134.916]...
          1538:20140403:141328.206 In zbx_popen() command:'cat /etc/zabbix/res'
          1538:20140403:141328.227 Run remote command [cat /etc/zabbix/res] Result [0] []...
        Случай второй:
        захотел зделать это через system.run[cat /etc/zabbix/res]

        результат в логах такой

        Code:
        1538:20140403:125737.100 Requested [system.run[cat]
          1538:20140403:125737.100 Sending back [ZBX_NOTSUPPORTED]

        Подскажите как можно решить этот вопрос?

        записи в кроне такая:
        */1 * * * * /etc/zabbix/ping.average.sh; /bin/sleep 20; /etc/zabbix/ping.average.sh
        итревал обновления для этого элемента данных 20сек.
        zabbix-agent-1.8.17-2.el6.i686
        zabbix server 1.8.13

        Comment

        • aib
          Senior Member
          • Jan 2014
          • 1615

          #5
          1) Таймаут может быть настроен в интервале от 1 до 30 секунд. Так что в принципе этот скрипт можно выполнить и в UserParameters. У меня пинг внешнего ресурса длился 3 секунды.
          Code:
          # time ping -c 4 8.8.8.8 | tail -1 | awk '{print $4;}' | cut -d '/' -f 2
          49.378
          
          real    0m3.078s
          user    0m0.001s
          sys     0m0.015s
          2) Пустые данные получаются, когда файл еще не сформировался или занят другим процессом. Надо писать более умный скриптик, проверяющий наличие и размер файла, а потом возвращяющий содержимое.

          3)
          записи в кроне такая:
          */1 * * * * /etc/zabbix/ping.average.sh; /bin/sleep 20; /etc/zabbix/ping.average.sh
          Насколько я понимаю, твой скрипт стартует в 0-ю секунду каждой минуты, потом выполняется 3 секунды, потом спит 20 секунд, потом стартует в 20-25-ю секунду. Потом все. Т.е. у тебя результат "рваный"

          0 часов 0 минут 0 секунд - первый ответ
          0 часов 0 минут 20 секунд - второй ответ
          0 часов 1 минута 0 секунд - третий ответ

          Интервал 0 часов 0 минут 40 секунд - отсутствует.

          Это правильно?
          Sincerely yours,
          Aleksey

          Comment

          Working...