#!/bin/bash # Das Plugin zeigt die Festplattenbelegung in Prozent des Quota-Hard-Limits. # Munin plugin to show the disk usage in percent of the quota hard limit. # The base frame is copied from the proftp plugin ########################################################################################## # Folgende Eintraege in der Datei /etc/munin/plugin-conf.d/munin-node nicht vergessen ! # # Don't forget to add following lines to the file /etc/munin/plugin-conf.d/munin-node # # [quota2percent_*] # # user root # # # # Weiterhin sind folgende Environment-Variablen erlaubt: # # Following environment variables are allowed: # # env.warning [value] # # env.critical [value] # # V17.0124 Jo Hartmann # ########################################################################################## # 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