LINUX.ORG.RU

как написать regexp


0

0

Нужно из вывода нагиосовской проверки извлечь ip пгпула и имена всех отвалившихся нод.

Делаю так:


$str = 'Host:192.168.0.1 FAIL:host1.org.ru OK:host2.org.ru';

preg_match('/^Host:
               ( (?:\d{1,3}\.){3}(?:\d{1,3}) )    # pgpool`s ip
               (?: \s FAIL:([\w\.]+) )+
            /xs', $str, $pocket);

в $pocket получаю:

array(3) {
  [0]=>
  string(40) "Host:192.168.0.1 FAIL:host1.org.ru"
  [1]=>
  string(13) "192.168.0.1"
  [2]=>
  string(16) "host1.org.ru"
}

Тут всё так как и должно быть. Но если обе ноды будут FAIL, то в карман попадёт только имя последней ноды. Как починить?

Решение, кривовато конечно...

 if (preg_match('/^Host:
                 ( (?:\d{1,3}\.){3}(?:\d{1,3}) )    # pgpool`s ip
                 (?: .*? FAIL:([\w\.]+) )
                 (?: .*? FAIL:([\w\.]+) )?
                 (?: .*? FAIL:([\w\.]+) )?
                 (?: .*? FAIL:([\w\.]+) )?
                 /xs', $str, $pocket))
phoenix_mstu
() автор топика

Проверки для Nagios на пахапе? Нет пути...

AnDoR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.