Add the script

This commit is contained in:
Gordon Grant-Stuart 2022-11-23 23:20:59 +00:00
parent 61ffc68389
commit e7efb1567b

83
check_yunohost.sh Executable file
View File

@ -0,0 +1,83 @@
#!/usr/bin/env bash
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
CHECK_STATE=$STATE_OK
if [[ "${1}" == "-h" ]]; then
cat <<EOF
This plugin returns the results of the most recent Yunohost diagnostic.
Usage:
check_yunohost [-h|<Category>|all|last_diagnosis]
Category can be one of the following:
"Base system"
"Internet connectivity"
"DNS records"
"Ports exposure"
"Web"
"Email"
"Services status check"
"System resources"
"System configurations"
"Applications"
Options:
-h, --help
Print this
EOF
exit
fi
function category () {
while IFS= read line; do
if [[ $(echo "$line" | grep -c "^ description: ") -gt 0 ]]; then
currentcategory="$(echo "${line}" | sed 's/^ description: //')"
# currentcategory="${line//^ description: /}"
fi
# echo "==${currentcategory}==${line}=="
if [[ "${currentcategory,,}" == "${1,,}" || "${1,,}" == 'all' ]]; then
echo "$line"
fi
done
}
# $(( ($(date +%s)-$(yunohost diagnosis show --full | grep timestamp | head -n1 | grep -o '[0-9]*'))/3600 ))
SHOW=$(mktemp /tmp/XXXXXX)
sudo yunohost diagnosis
# SHOW="show.yml"
OKS=$(cat $SHOW | category "${1}" | grep -Ec "^ *status: (SUCCESS|INFO)")
WARNINGS=$(cat $SHOW | category "${1}" | grep -c "^ *status: WARNING")
ERRORS=$(cat $SHOW | category "${1}" | grep -c "^ *status: ERROR")
if [[ $ERRORS -gt 0 ]]; then
CHECK_STATE=$STATE_CRITICAL
cat $SHOW | category "${1}" | grep -A1 "^ *status: ERROR" | grep '^ *summary: ' | sed 's/^ *summary: /ERROR: /'
cat $SHOW | category "${1}" | grep -A1 "^ *status: WARNING" | grep '^ *summary: ' | sed 's/^ *summary: /WARNING: /'
echo -e "|'OK'=$OKS 'WARNING'=$WARNINGS 'ERROR'=$ERRORS"
elif [[ $WARNINGS -gt 0 ]]; then
CHECK_STATE=$STATE_WARNING
cat $SHOW | category "${1}" | grep -A1 "^ *status: WARNING" | grep '^ *summary: ' | sed 's/^ *summary: /WARNING: /'
echo -e "|'OK'=$OKS 'WARNING'=$WARNINGS 'ERROR'=$ERRORS"
elif [[ $OKS -eq 0 ]]; then
CHECK_STATE=$STATE_UNKNOWN
echo -e "UNKNOWN\nCould not get results from 'yunohost diagnosis show'"
else
CHECK_STATE=$STATE_OK
echo "All OK"
echo -e "|'OK'=$OKS 'WARNING'=$WARNINGS 'ERROR'=$ERRORS"
fi
rm $SHOW
exit $CHECK_STATE