I have tried using check_http but I get success even if the website is redirected to an error page
Isso pode ser resolvido com check_http --expect
. Aqui está a documentação de check_http --help :
-e, --expect=STRING Comma-delimited list of strings, at least one of them is expected in the first (status) line of the server response (default: HTTP/1.) If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)
O exemplo a seguir retornará um 'OK' para um código de resposta HTTP 200 OK , mas dará um erro crítico para um redirecionamento 302.
host % check_http --expect=200
HTTP CRITICAL - Invalid HTTP response received from host: HTTP/1.0 301 OK
Para um site seguro (por SSL) e autenticação, confira também as tags check_http --ssl
e --authorization
.
-S, --ssl Connect via SSL. Port defaults to 443
-a, --authorization=AUTH_PAIR Username:password on sites with basic authentication
Ou, talvez você não queira realmente entrar no sistema, mas apenas quer ter certeza de que a página requer um nome de usuário / senha, porque esse nome de usuário / senha pode se tornar uma preocupação de segurança. Nesse caso, tente algo como o seguinte / 401
é o código de resposta HTTP para 'Não Autorizado' ou 'Autorização Requerida' - o 401
é obrigatório, a sequência de texto depois é opcional e pode dizer uma das várias coisas diferentes , então eu apenas digo ao Nagios para esperar 401
.
check_http --expect="401"