Plugin de requests
Está definido como un plugin de servidor, para comprobacion de APIs
Introducción
Está definido como un plugin de servidor, para comprobacion de APIs y a su vez es capaz de realizar peticiones HTTP (GET, POST, PUT) y así integrar de forma sencilla el sistema de alertas con cualquier API.
Tipo: Plugin de servidor
Matriz de compatibilidad
Desarrollado en python 3.8. Se distribuye el binario compilado que no requiere dependencias extra.
Pre requisitos
Para poder ejecutar el plugin es necesario:
- Pandora FMS Data Server habilitado.
- Pandora FMS Plugin Server habilitado.
Configuración
El plugin se ejecuta definiendo los parámetros correspondientes:
usage: pandora_api_requests [-h] -u URL [-m {get,post,put,patch,delete,option}] [-hd HEADERS] [-d DATA] [--ssl SSL] [-md {requests,server_plugin}] [--comparison-value COMPARISON_VALUE] [--condition {is_equal_to,is_not_equal_to,is_greater_than,is_less_than,contains,does_not_contain,matches_regex,is_null,is_not_null}]
[--down_codes DOWN_CODES [DOWN_CODES ...]] [-v] [--json-path JSON_PATH]
Opciones:
-u, --url La URL a la que se enviará la solicitud HTTP. (Ejemplo: http://127.0.0.1)
-m, --method {get,post,put,patch,delete,option}
El método HTTP que se utilizará (GET, POST, PUT, PATH, DELETE).
-hd, --headers Parámetros de valores clave de encabezados en pares de claves separados por comas. (Ejemplo: «Authorization=Bearer abc123token,Content-Type=application/json,X-Request-ID=123456»)
-d, --data Parámetros de datos clave-valor en pares clave separados por comas. (Ejemplo: «title=foo,body=bar,userId=1»)
--ssl SSL Protocolo de seguridad de Internet
-md, --mode {requests,server_plugin} Devuelve la salida para el complemento del servidor; si se elige request, devuelve la salida para el complemento de solicitud
--comparison-value El valor con el que comparar el campo filtrado en el json.
--condition {is_equal_to,is_not_equal_to,is_greater_than,is_less_than,contains,does_not_contain,matches_regex,is_null,is_not_null}
Si se cumple la condición, el valor será crítico (0).
Condición: is_equal_to | is_not_equal_to | is_greater_than | is_less_than | contains | does_not_contain | matches_regex | is_null | is_not_null
--down_codes DOWN_CODES [DOWN_CODES ...]
Lista de códigos de estado separados por espacios (sin comillas) Ejemplo: --down-codes 404 400
-v, --verbosity Añade un indicador para comprobar el valor sin procesar de la respuesta en el terminal
--json-path Palabra para buscar en el json
El unico campo obligatorio para la ejecucion es la url de la solicitud.
El modo requests esta por defecto en la ejecucion asi como el metodo GET, al ejecutar el modo requests solo se imprimira el json resultante mientras que al utilizar el modo server_plugin imprimira 1 si la ejecucion fue correcta y 0 si no cumplio con la comparacion o fallo la peticion.
Hay una excepción: si se trata de ejecutar la acción de modo server_plugin con el método delete, este no es permitido.
Ejecución manual
Versión binaria:
./pandora_api_requests -u <url objetivo> -m <método> -hd <encabezado de la petición> -d <datos de la petición> -md <modo de las solicitudes> --comparison-value <El valor a comparar> --condition <Si coincide con la condición, el valor> --down_codes <código de estado a comparar> -v <verbosidad mostrar valor sin procesar en la terminal> --json-path <Palabra a buscar en el json>
el plugin se maneja dependiendo de modo requests para devolver la respuesta JSON sin procesar o el código de estado de forma simple y el modo server_plugin diseñado para la integración.
Modo requests:
./pandora_api_requests -u https://jsonplaceholder.typicode.com/posts/1 -m get -md requests -v
Modo server_plugin:
./pandora_api_requests -u https://jsonplaceholder.typicode.com/posts/1 -m get -md server_plugin --json-path "$.userId" --condition "is_equal_to" --comparison-value "1" -v