Nagios, не принимающий regex в команде

Только, когда gettext был установлен как загружаемое расширение PHP. Проверьте свою конфигурацию PHP (php.ini) на extension строки. Если Вы хотите, чтобы пользователи не могли использовать gettext, можно использовать PHP disable_functions конфигурационная директива для отключения функций gettext, из руководства PHP:

строка disable_functions
Эта директива позволяет Вам отключать определенные функции из соображений безопасности. Это берет разграниченный запятой список имен функций. disable_functions не затронут Безопасным режимом. Эта директива должна быть установлена в php.ini, Например, Вы не можете установить это в httpd.conf.

3
задан 21 February 2012 в 17:44
3 ответа

Поскольку экранирование тоже не сработало (и действительно работает без командной строки), и я не хотел тратить больше времени на его отладку, я написал мой собственный плагин Nagios для замены check_http, который работает как шарм:

https://github.com/tao-software/nagios-plugin-http-tao

1
ответ дан 3 December 2019 в 06:42

В исходном коде check_http.c указано, что параметр -r проверяет заголовки и содержимое страницы. Проблема, с которой вы сталкиваетесь, вероятно, заключается в том, что интерпретатор макроса команды Nagios пытается заменить что-то в вашей строке регулярного выражения.

Вам следует попробовать экранировать все ваши (, | и ) символов. Если это не сработает, попробуйте использовать только круглые скобки и только трубы. Вы также можете попробовать использовать одинарные кавычки вместо двойных.

2
ответ дан 3 December 2019 в 06:42

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

./ check_http -H localhost -r "HTTP / 1.1 (200 | 301 | 302 | 303 | 304 | 307 | 401 | 418 | 426)" HTTP CRITICAL: HTTP / 1.1 302 Найдено - шаблон не найден - 650 байт за время ответа 0,001 секунды | время = 0,001410 с ;;; 0,000000 size = 650B ;;; 0

Как предлагает Джефф Странк, вам нужно избегать скобок (чтобы оболочка их не потребляла), например:

./ check_http -H localhost -r "HTTP / 1.1 \ (200 | 301 | 302 | 303 | 304 | 307 | 401 | 418 | 426 \)" HTTP OK: HTTP / 1.1 302 Найдено - 650 байт за время ответа 0,001 секунды | время = 0,001425 с ;;; 0,000000 size = 650B ;;; 0

0
ответ дан 3 December 2019 в 06:42

Теги

Похожие вопросы