WalterH
tja, vermutlich war das zu sehr auf meine bedürfnisse getrimmt
WalterH
oha, da hast du recht. gibt es ja sogar direkt für die bash, extrem nützlich! Danke!
crpb
one liner sind ja schön und hässlich zugleich 😃
habe das mal mit deinen Infos umgebaut, musste noch ein wenig gegen json kämpfen...
#!/bin/bash
CHECK="grommunio quota"
#thx 2 crpb: https://community.grommunio.com/d/2671-checkmk-script-fur-quotenuberwachung/
STUFF="prohibitreceivequota prohibitsendquota assocmessagesizeextended normalmessagesizeextended storagequotalimit"
DATA=$(grommunio-admin shell -n <<< "$(for user in $(gromox-mbop foreach.mb echo-username); do printf "exmdb %s store get %s --format=json-kv\n" "$user" "$STUFF" ;done)" 2>/dev/null |sed '/^$/d' |awk '{ if ($1=="exmdb") { mailbox=$2 } else if ($1=="tag" && $2=="value") {next} else { printf "%s\t%s\n", mailbox, $0 } }' |while IFS=$'\t' read -r username json; do jq --arg username "$username" '{username: $username, store: ( . | if (.storagequotalimit) then . else . + {"storagequotalimit": null} end | if (.prohibitsendquota) then . else . + {"prohibitsendquota": null} end | if (.prohibitreceivequota) then . else . + {"prohibitreceivequota": null} end ) }' <<< "$json"; done | jq --slurp)
user_list=$(echo "$DATA" | jq .[].username | sed -e 's/"//g')
while IFS= read -r line; do
normalmessagesizeextended=$(echo "$DATA" | jq '.[] | select(.username=="'"$line"'") | .store.normalmessagesizeextended' | numfmt --to-unit=M)
storagequotalimit=$(echo "$DATA" | jq '.[] | select(.username=="'"$line"'") | .store.storagequotalimit')
storagequotalimit=$(echo $(( storagequotalimit * 1024 )) | numfmt --to-unit=M)
prohibitreceivequota=$(echo "$DATA" | jq '.[] | select(.username=="'"$line"'") | .store.prohibitreceivequota')
prohibitreceivequota=$(echo $(( prohibitreceivequota * 1024 )) | numfmt --to-unit=M)
prohibitsendquota=$(echo "$DATA" | jq '.[] | select(.username=="'"$line"'") | .store.prohibitsendquota')
prohibitsendquota=$(echo $(( prohibitsendquota * 1024 )) | numfmt --to-unit=M)
assocmessagesizeextended=$(echo "$DATA" | jq '.[] | select(.username=="'"$line"'") | .store.assocmessagesizeextended')
assocmessagesizeextended=$(echo $(( assocmessagesizeextended * 1024 )) | numfmt --to-unit=M)
storagequotalimit=$(echo "$DATA" | jq '.[] | select(.username=="'"$line"'") | .store.storagequotalimit')
storagequotalimit=$(echo $(( storagequotalimit * 1024 )) | numfmt --to-unit=M)
echo "P \"$CHECK $line\" normalmessagesizeextended=$normalmessagesizeextended;$prohibitsendquota;$prohibitreceivequota;0;$storagequotalimit Füllstand: $normalmessagesizeextended M - SendLimit: $prohibitsendquota M - ReceiveLimit: $prohibitreceivequota M - Max: $storagequotalimit M"
done <<< "$user_list"
was mich noch stört: ich hatte vorher via -f status=0 die shared user rausgefiltert.
ganz ehrlich: ganz steige ich durch deinen one-liner nicht durch und kann das jetzt nicht mehr...
aber vielleicht funktioniert der check so jetzt bei euch?
ich muss auch noch verstehen was der unterschied zwischen normalmessagesizeextended und assocmessagesizeextended ist