Ad Widget

Collapse

Не выполняется удаленная команда

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • mkolomiets
    Senior Member
    • Jul 2009
    • 134

    #1

    Не выполняется удаленная команда

    Привет!
    Никак не могу побороть проблему запуска удаленной команды из действия.
    Конфиг:
    Code:
    LogFile=/tmp/zabbix_agentd.log
    EnableRemoteCommands=1
    LogRemoteCommands=1
    Server=x.x.x.x
    DisablePassive=1
    DisableActive=0
    RefreshActiveChecks=120
    BufferSend=30
    StartAgents=3
    DebugLevel=4
    Описание команды в действии:
    Code:
    {HOSTNAME}:/usr/bin/sudo /bin/rm -f /etc/test.txt
    Детальный отчет по событию (скрин во вложении).

    В логах на стороне агента и сервера ни одного сообщения. В sudoers все необходимые настроки есть, та же команда запущенная из под пользователя заббикс в консоли срабатывает без проблем, в лог системы пишется соотв отчет.
    Итем с system.run[] так же нормально отрабатывает.

    Очень нужно разобраться почему не работает, спасибо!
    Attached Files
    Last edited by mkolomiets; 16-09-2010, 14:04.
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Мне не нравится опция в вашем конфиге
    DisablePassive=1
    Code:
    Отключение пассивных проверок. Агент не слушает никакой TCP порт.
    Будут работать только активные проверки.
    0 - не отключать
    1 - отключить
    http://www.zabbix.com/documentation/.../zabbix_agentd
    Last edited by dima_dm; 16-09-2010, 14:51.

    Comment

    • mkolomiets
      Senior Member
      • Jul 2009
      • 134

      #3
      Originally posted by dima_dm
      ìíå íå íðàâèòñÿ îïöèÿ â âàøåì êîíôèãå
      disablepassive=1
      äà, òàê îíî è åñòü.
      àãåíòû ñèäÿò "ìîðäîé â ìèð" íà äèíàìè÷åñêèõ àäðåñàõ (íåêîòîðûå çà íàò-îì) ïîýòîìó ñâÿçü òîëüêî îò àãåíòà ê ñåðâåðó. è øàáëîíû íàñòðîåíû ñîîòâåòñòâåííî - òèïû èòåìîâ àêòèâíûé àãåíò/òðàïïåð.
      ìîæåò ýòî âëèÿòü íà âûïîëíåíèå óäàëåííûõ êîìàíä â äåéñòâèÿõ?

      Comment

      • zalex_ua
        Senior Member
        Zabbix Certified Trainer
        Zabbix Certified SpecialistZabbix Certified Professional
        • Oct 2009
        • 1286

        #4
        Originally posted by mkolomiets
        да, так оно и есть.
        агенты сидят "мордой в мир" на динамических адресах (некоторые за нат-ом) поэтому связь только от агента к серверу. и шаблоны настроены соответственно - типы итемов активный агент/траппер.
        может это влиять на выполнение удаленных команд в действиях?
        Ну конечно влияет. Сервер посылая удаленную команду агенту, пытается с ним соединится. Как же сервер соединится с агентом если агент не прослушивает необходимый порт?
        Для удаленных команд обязательно нужно разрешить пассивные проверки (сделать DisablePassive=0 или же закомментировать эту строку).
        Как бороться с динамическими IP-адресами и узлами сети за натом - это уже другая история.
        Last edited by zalex_ua; 16-09-2010, 20:23. Reason: encode fixed

        Comment

        • mkolomiets
          Senior Member
          • Jul 2009
          • 134

          #5
          Originally posted by zalex_ua
          Ну конечно влияет. Сервер посылая удаленную команду агенту, пытается с ним соединится. Как же сервер соединится с агентом если агент не прослушивает необходимый порт?
          Это предположение или точная информация? А то подключение, которое открывает агент к серверу, не может использоваться для передачи команд?

          Для удаленных команд обязательно нужно разрешить пассивные проверки (сделать disablepassive=0 или же закомментировать эту строку).
          Как бороться с динамическими ip-адресами и узлами сети за натом - это уже другая история.
          Я попробую, в принципе есть возможность поставить для теста железку с агентом со статическим адресом в той же сети что и сервер.
          Но все равно как то странно немного, не думаю что разработчики могли такой вариант упустить как динамический клиент, который не резолвится в ДНС или вообще не может быть доступен со стороны сервера из-за того же НАТа, и что же в этом случае получается, что теряется одна из самых рульных фишек системы - активная реакция на события?

          Знать бы где в сорцах код передачи команды посмотреть для полной уверенности, что именно так...

          Comment

          • mkolomiets
            Senior Member
            • Jul 2009
            • 134

            #6
            Originally posted by mkolomiets
            Знать бы где в сорцах код передачи команды посмотреть для полной уверенности, что именно так...
            Сам себе отвечаю. Я так понимаю это оно?
            Получается, удаленные команды выполняются только при подключении сервера к агенту...
            Гм, а нельзя вместо коннекта положить сформированную строку команды в очередь, что бы агент при следующем опросе ключей забрал и выполнил ее? Я подозреваю что с такой логикой как раз и работают ключи system.run в случае чисто активного агента.

            operations.c
            Code:
            static void run_remote_command(char* host_name, char* command)
            {
            ...
                                    param = dyn_escape_param(p);
                                    item.key = zbx_dsprintf(NULL, "system.run[\"%s\",\"nowait\"]", param);
                                    zbx_free(param);
            
                                    init_result(&agent_result);
            
                                    alarm(CONFIG_TIMEOUT);
                                    ret = [get_value_agent(&item, &agent_result);
                                    alarm(0);
            checks_agent.c
            Code:
            int     get_value_agent(DC_ITEM *item, AGENT_RESULT *result)
            {
            ...
                    conn = item->host.useip == 1 ? item->host.ip : item->host.dns;
                    zabbix_log(LOG_LEVEL_DEBUG, "In %s() host:'%s' addr:'%s' key:'%s'",
                                    __function_name, item->host.host, conn, item->key_orig);
            
                    if (SUCCEED == (ret = zbx_tcp_connect(&s, CONFIG_SOURCE_IP, conn, item->host.port, 0)))
                    {

            Comment

            • zalex_ua
              Senior Member
              Zabbix Certified Trainer
              Zabbix Certified SpecialistZabbix Certified Professional
              • Oct 2009
              • 1286

              #7
              Originally posted by mkolomiets
              Это предположение или точная информация?
              Предположение на уровне 100% уверенности, основанное на опыте.

              Originally posted by mkolomiets
              Но все равно как то странно немного, не думаю что разработчики могли такой вариант упустить как динамический клиент, который не резолвится в ДНС или вообще не может быть доступен со стороны сервера из-за того же НАТа, и что же в этом случае получается, что теряется одна из самых рульных фишек системы - активная реакция на события?

              Originally posted by mkolomiets
              Получается, удаленные команды выполняются только при подключении сервера к агенту...
              Гм, а нельзя вместо коннекта положить сформированную строку команды в очередь, что бы агент при следующем опросе ключей забрал и выполнил ее? Я подозреваю что с такой логикой как раз и работают ключи system.run в случае чисто активного агента.
              Тебе прямой путь сначала в поиск по форуму а потом наверное сюда https://support.zabbix.com/browse/ZBXNEXT
              И удачи.

              Comment

              Working...