CMK version:2.0.0p23 (CEE)
OS version:debian 11
Error message:
“title”: “The requested service was not found”,
“status”: 404,
“detail”: “The service description CPU did not match any service”
**
Hallo,
ich versuche eien Abfrage zu erstellen (REST-API) die mir den Service-Status liefern soll.
Dabei ist HOST=$1 und Service =$2 .
Solange der Service-Name kein Leerzeichen (Uptime) enthält, ist alles in Butter. Sobald ein Leerzeichen (CPU load) enthalten ist, läuf das Script auf einen Fehler.
Wie kann ich den Service-Namen übergeben? lst Doku sollte Leerzeichen in Curl kein Problem sein.
#!/bin/bash
HOST_NAME="MONHOST"
SITE_NAME="MONSITE"
API_URL="https://$HOST_NAME/$SITE_NAME/check_mk/api/1.0"
HOST=$1
SERVICE=$2
USERNAME="automation"
PASSWORD="PASS"
out=$(
curl \
-k \
-G \
--write-out "\nxxx-status_code=%{http_code}\n" \
--header "Authorization: Bearer $USERNAME $PASSWORD" \
--header "Accept: application/json" \
--data-urlencode 'service_description='$2' ' \
"$API_URL/objects/host/$HOST/actions/show_service/invoke")
resp=$( echo "${out}" | grep -v "xxx-status_code" )
code=$( echo "${out}" | awk -F"=" '/^xxx-status_code/ {print $2}')
# For indentation, please install 'jq' (JSON query tool)
echo "$resp" | jq
# echo "$resp"
if [[ $code -lt 400 ]]; then
echo "OK"
exit 0
else
echo "Request error"
exit 1
fi
Please use the preformatted text format for code for better readability. You can do that by highlighting the text, then pressing Ctrl+E.
restAPI-show_service.sh HOST Uptime
Ergebnis:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 432 100 432 0 0 4595 0 --:--:-- --:--:-- --:--:-- 4595
{
"links": [
{
"domainType": "link",
"rel": "self",
"href": "http://MONHOST/MONSITE/check_mk/api/1.0/objects/service/HOST-Uptime",
"method": "GET",
"type": "application/json"
}
],
"domainType": "service",
"id": "HOST-Uptime",
"title": "Service Uptime",
"members": {},
"extensions": {
"description": "Uptime",
"host_name": "HOST",
"state_type": 1,
"state": 0,
"last_check": 1638533067
}
}
OK
restAPI-show_service.sh HOST CPU load
Ergebnis:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 130 100 130 0 0 1397 0 --:--:-- --:--:-- --:--:-- 1413
{
"title": "The requested service was not found",
"status": 404,
"detail": "The service description CPU did not match any service"
}
Request error
Bei Substtution des Service-Namen :
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: load
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 130 100 130 0 0 1340 0 --:--:-- --:--:-- --:--:-- 1340
{
"title": "The requested service was not found",
"status": 404,
"detail": "The service description CPU did not match any service"
}
restAPI-show_service.sh: Zeile 33: [[: 000
404: Syntaxfehler im Ausdruck. (Fehlerverursachendes Zeichen ist "404").
Request error
Ich denke mal, daß das Problem mal wieder der “Wald mit den vielen Bäumen” ist