I think I fixed it this time

This commit is contained in:
Gordon Grant-Stuart 2022-11-24 15:44:36 +00:00
parent 9cd1903538
commit d51d6f2b05

View File

@ -31,16 +31,16 @@ function help () {
Only applicable to 'last_diagnosis'. Only applicable to 'last_diagnosis'.
Category can be one of the following: Category can be one of the following:
"Base system" "base system"
"Internet connectivity" "internet connectivity"
"DNS records" "dns records"
"Ports exposure" "ports exposure"
"Web" "web"
"Email" "email"
"Services status check" "services status check"
"System resources" "system resources"
"System configurations" "system configurations"
"Applications" "applications"
EOF EOF
} }
@ -62,22 +62,23 @@ SHOW=$(mktemp /tmp/XXXXXX)
sudo yunohost diagnosis show --full > $SHOW sudo yunohost diagnosis show --full > $SHOW
# SHOW="show_full.yml" # SHOW="show_full.yml"
LAST_DIAGNOSIS=$(( ($(date +%s) - $(cat $SHOW | grep timestamp | tail -n1 | grep -o '[0-9]*') )/3600 )) CHECK_TYPE='na'
CATEGORY=''
OKS=$(cat $SHOW | category "${1}" | grep -Ec "^ *status: (SUCCESS|INFO)") while [[ $# -gt 0 ]]; do
WARNINGS=$(cat $SHOW | category "${1}" | grep -c "^ *status: WARNING") case "$1" in
ERRORS=$(cat $SHOW | category "${1}" | grep -c "^ *status: ERROR")
CHECK_TYPE='category'
while [[ $# -gt 1 ]]; do
case "${1}" in
-h) -h)
help help
exit exit
;; ;;
last_diagnosis) -a)
CHECK_TYPE='last_diagnosis' shift
if [[ "$1" == 'last_diagnosis' ]]; then
CHECK_TYPE='last_diagnosis'
else
CHECK_TYPE='category'
CATEGORY="$1"
fi
;; ;;
-w) -w)
shift shift
@ -93,13 +94,16 @@ done
case "$CHECK_TYPE" in case "$CHECK_TYPE" in
category) category)
OKS=$(cat $SHOW | category "$CATEGORY" | grep -Ec "^ *status: (SUCCESS|INFO)")
WARNINGS=$(cat $SHOW | category "$CATEGORY" | grep -c "^ *status: WARNING")
ERRORS=$(cat $SHOW | category "$CATEGORY" | grep -c "^ *status: ERROR")
if [[ $ERRORS -gt 0 ]]; then if [[ $ERRORS -gt 0 ]]; then
CHECK_STATE=$STATE_CRITICAL CHECK_STATE=$STATE_CRITICAL
cat $SHOW | category "${1}" | grep -A1 "^ *status: ERROR" | grep '^ *summary: ' | sed 's/^ *summary: /ERROR: /' cat $SHOW | category "$CATEGORY" | grep -A1 "^ *status: ERROR" | grep '^ *summary: ' | sed 's/^ *summary: /ERROR: /'
cat $SHOW | category "${1}" | grep -A1 "^ *status: WARNING" | grep '^ *summary: ' | sed 's/^ *summary: /WARNING: /' cat $SHOW | category "$CATEGORY" | grep -A1 "^ *status: WARNING" | grep '^ *summary: ' | sed 's/^ *summary: /WARNING: /'
elif [[ $WARNINGS -gt 0 ]]; then elif [[ $WARNINGS -gt 0 ]]; then
CHECK_STATE=$STATE_WARNING CHECK_STATE=$STATE_WARNING
cat $SHOW | category "${1}" | grep -A1 "^ *status: WARNING" | grep '^ *summary: ' | sed 's/^ *summary: /WARNING: /' cat $SHOW | category "$CATEGORY" | grep -A1 "^ *status: WARNING" | grep '^ *summary: ' | sed 's/^ *summary: /WARNING: /'
elif [[ $OKS -eq 0 ]]; then elif [[ $OKS -eq 0 ]]; then
CHECK_STATE=$STATE_UNKNOWN CHECK_STATE=$STATE_UNKNOWN
echo -e "UNKNOWN: Could not get results from 'yunohost diagnosis show'" echo -e "UNKNOWN: Could not get results from 'yunohost diagnosis show'"
@ -107,8 +111,10 @@ case "$CHECK_TYPE" in
CHECK_STATE=$STATE_OK CHECK_STATE=$STATE_OK
echo "OK: All diagnostics return SUCCESS" echo "OK: All diagnostics return SUCCESS"
fi fi
echo -e "|'OK'=$OKS 'WARNING'=$WARNINGS 'ERROR'=$ERRORS" # The perfdata
;; ;;
last_diagnosis) last_diagnosis)
LAST_DIAGNOSIS=$(( ($(date +%s) - $(cat $SHOW | grep timestamp | tail -n1 | grep -o '[0-9]*') )/3600 ))
if [[ $LAST_DIAGNOSIS -gt $LAST_DIAGNOSIS_CRIT ]]; then if [[ $LAST_DIAGNOSIS -gt $LAST_DIAGNOSIS_CRIT ]]; then
CHECK_STATE=$STATE_CRITICAL CHECK_STATE=$STATE_CRITICAL
echo "CRITICAL: Diagnosis results are more than $LAST_DIAGNOSIS_CRIT hours old." echo "CRITICAL: Diagnosis results are more than $LAST_DIAGNOSIS_CRIT hours old."
@ -119,10 +125,14 @@ case "$CHECK_TYPE" in
CHECK_STATE=$STATE_OK CHECK_STATE=$STATE_OK
echo "OK: Diagnosis results are less than $LAST_DIAGNOSIS_WARN hours old." echo "OK: Diagnosis results are less than $LAST_DIAGNOSIS_WARN hours old."
fi fi
echo -e "|'Last_Diagnosis'=${LAST_DIAGNOSIS}h" # The perfdata
;;
na)
CHECK_STATE=$STATE_UNKNOWN
echo -e "UNKNOWN: Incorrect parameters. See help for details.'"
;; ;;
esac esac
echo -e "|'OK'=$OKS 'WARNING'=$WARNINGS 'ERROR'=$ERRORS 'Last_Diagnosis'=${LAST_DIAGNOSIS}h" # The perfdata
rm $SHOW rm $SHOW