Я пытался использовать check_http, но я добился успеха, даже если веб-сайт перенаправлен на страницу ошибки
Это можно решить с помощью check_http --expect
. Вот документация из check_http --help :
-e, --expect = STRING Список строк, разделенных запятыми, по крайней мере одна из них ожидается в первой (статусной) строке ответа сервера (по умолчанию: HTTP / 1.) Если указано, пропускается вся другая логика строки состояния ( например: обработка 3xx, 4xx, 5xx)
В следующем примере будет возвращено «ОК» для HTTP-кода ответа « 200 OK» , но будет показана критическая ошибка для перенаправления 302.
host % check_http --expect=200
HTTP CRITICAL - Invalid HTTP response received from host: HTTP/1.0 301 OK
Для безопасного веб-сайта (через SSL) и аутентификации также проверьте check_http --ssl
и --authorization
флаги.
-S, --ssl Подключиться через SSL. Порт по умолчанию 443
-a, --authorization = AUTH_PAIR Имя пользователя: пароль на сайтах с базовой аутентификацией
Или, возможно, вы на самом деле не хотите входить в систему, а просто хотите убедиться, что на странице требуется имя пользователя / пароль, потому что это имя пользователя / пароль может стать проблемой безопасности. В этом случае попробуйте что-то вроде следующего / 401
это HTTP-код ответа для «Неавторизованного» или «Требуется авторизация» - 401
это обязательно, текстовая строка после этого является необязательной и может говорить о нескольких разных вещах, поэтому я просто говорю Nagios ожидать 401
.
check_http --expect="401"
check_http
Плагин поддерживает-s string
вариант , который позволяет вам искать определенную струну ответа HTTP. Если страница печатает определенную строку в случае успеха, вы можете проверить ее, чтобы отличить ее от ошибки.