Назад | Перейти на главную страницу

Nagios не принимает регулярное выражение в команде

Я определил эту команду:

define command{
command_name check_http_sane
command_line $USER1$/check_http -H $HOSTNAME$ -r "HTTP/1.1 (200|301|302|303|304|307|401|418|426)"
}

Когда я запускаю его вручную из командной строки, он работает нормально, но nagios (2.6) сообщает об ошибке «шаблон не найден». Мне нужно от чего-то бежать?


Редактировать: Как указано ниже, я решил это, заменив check_http с моим собственным скриптом, который работает (во всяком случае, достаточно хорошо для нашего случая использования). Сценарий: http://pastebin.com/hNmz6Wa1

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

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

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

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

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

./check_http -H localhost -r "HTTP/1.1 (200|301|302|303|304|307|401|418|426)" HTTP CRITICAL: HTTP/1.1 302 Found - pattern not found - 650 bytes in 0.001 second response time |time=0.001410s;;;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 Found - 650 bytes in 0.001 second response time |time=0.001425s;;;0.000000 size=650B;;;0