From e849b61d077a9759cef0e5a58b68e90b8ab9cc7b Mon Sep 17 00:00:00 2001 From: JoHartmann Date: Mon, 23 Jan 2017 19:52:44 +0100 Subject: [PATCH] Create quota2percent_ Quota usage in percent --- plugins/disk/quota2percent_ | 126 ++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 plugins/disk/quota2percent_ diff --git a/plugins/disk/quota2percent_ b/plugins/disk/quota2percent_ new file mode 100644 index 00000000..6ccbc8c5 --- /dev/null +++ b/plugins/disk/quota2percent_ @@ -0,0 +1,126 @@ +#!/bin/bash + +# Spachauswahl +# Language selection + Language="de" + + +# Wildcard-Text erkennen +# get tehe wild card text + Id=$0 + Id=${Id##*_} + +# Einlesen der Quoten für das entsprechende Laufwerk mit repquota +# Reading the quotes for the selected device, using repquota + readarray Quotas < <( repquota /dev/$Id | grep " -- " ) + readarray Totals < <( df /dev/$Id ) + +# Anzahl der Nutzer ermitteln +# Get the count of Users + Users=${#Quotas[@]} + + +################################################### +# Beginn der Standard-Konfigurationsbereiches # +# Standard Config Section Begin # +################################################### + + if [ "$1" = "autoconf" ]; then + echo yes + exit 0 + fi + +. $MUNIN_LIBDIR/plugins/plugin.sh + + if [ "$1" = "config" ]; then + + # Anpassung der Texte in der Grafik + # Localisation of the graphic texts + case $Language in + de) + echo graph_title Quota-Hard-Limit von $Id + echo graph_vlabel Nutzung in % Hardlimit + echo graph_info "Die Grafik zeigt die Belegung des durch Quota reglementierten Speicherplatzes für alle regulären Nutzer (UID >=1000) in Prozent des Hardlimits." + Total_txt="Su. aller Nutzer" + Total_info="Inklusive Systemnutzer (UID < 1000)" + ;; + es) + echo graph_title Cuota de límite absoluto de $ Id + echo graph_vlabel el % de uso del límite duro + echo graph_info "El gráfico muestra la disponibilidad de espacio regulado por cuotas para todos los usuarios regulares (UID> = 1000) como porcentaje de límites duros." + Total_txt="Suma de todos los usuarios " + Total_info="La inclusión de usuario del sistema (UID <1000) " + ;; + *) + echo graph_title quota hard limit of %Id + echo graph_vlabel Usage in % + Total_txt="all users" + echo graph_info "The graphic shows the allocation of the quota-regulated storage space for all regular users (UID> = 1000) as a percentage of the hard limit ." + Total_info="system users (UID < 1000) included" + ;; + esac + + # Standard Konfiguration + # Defaults configuration + echo graph_category disk + echo graph_args --lower-limit 0 --upper-limit 100 + echo graph_printf %5.2lf %% + echo graph_scale no + + # Ggf. Werte aus der Datei munin-node uebernehmen + # if any fetch from munin-node file + Warning=${warning:-90} + Critical=${critical:-95} + + # Die Quota-Nutzer und deren Real-Namen ermitteln, das Root-Problem beheben, die Kondfigurationsdaten ausgeben + # For each quota user fetch his real name, solve the root problem, Output the configuration data + for((i=0; i<$Users; i++));do + Quota=( ${Quotas[$i]} ) + User=${Quota[0]} + Passwd=$(cat /etc/passwd | grep $User) + OLDIFS=$IFS + IFS=':' Infos=($Passwd) + IFS=$OLDIFS + Name=${Infos[4]} + Name=${Name%%,*} + + [ $User == "root" ] && { User="__root"; Name="__root";} + [ ! -n "$Name" ] && Name=$User + [ $(id -u ${Quota[0]}) -lt 1000 ] && echo $User.graph no + echo $User.label $Name + echo $User.warning $warning + echo $User.critical $critical + done + + # Die Summenzeile konfigurieren + # configure the total line + echo total.label $Total_txt + echo total.warning $Warning + echo total.critical $Critical + echo total.info $Total_info + exit 0 + fi + +################################################### +# Ende der Standard-Konfigurationsbereiches # +# Standard Config Section End # +################################################### + +# Die Werte (Belegung und Hardlimit) je Nutzer ermitteln, das Root-Problem umgehen, die Prozente berechnen +# fetch the needed values (used and hard limit) for each user, work around the root problem, calculate the percent value + for((i=0; i<$Users; i++));do + Quota=( ${Quotas[$i]} ) + User=${Quota[0]} + [ $User == "root" ] && User="__root" + Prozent=`echo "scale=2 ; ${Quota[2]}*100/${Quota[4]}" | bc` + + echo $User.value $Prozent + done + +# Die Summenwerte +# the value for the total line + Total=( ${Totals[1]} ) + Summe=`echo "scale=2;${Total[2]}*100/${Total[1]}" | bc` + echo total.value $Summe + + exit 0