#!/bin/sh

# Wypisuje ostrzeenie o przepenieniu dysku (procentowym),
# albo zbyt maej rezerwie wolnego miejsca.

# Skrypt analizuje wszystkie zamontowane systemy plikw
# sprawdzajc, czy nie zbliaj si nadmiernie do kresu pojemnoc;
# na wyjciu wymieniane s jedynie te dyski, ktrych stan wymaga interwencji.


# Set thresholds
min_free=4000

max_in_use=55


# Pobranie listy systemw plikw.
filesystems=`df -k | grep -v Use | grep -v none | awk '{ print $6 }'`

for filesystem in $filesystems
do
    # Zapamitanie informacji o stanie danego systemu plikw.
    entry=`df -k $filesystem | tail -n 1`  

    # Wyuskanie informacji o wolnym miejscu i procentowej zajtoci miejsca.
    free=`echo $entry | cut -d' ' -f4`
    in_use=`echo $entry | cut -d' ' -f5 | cut -d'%' -f1 `

    # Porwnanie zajtoci z wyznaczonym progiem.
    if [ $(expr "$in_use > $max_in_use" ) ]
    then
        echo "$filesystem ma tylko $free KB wolnego miejsca ($in_use% zajtego)."
    else
        # Porwnanie iloci wolnego miejsca z wyznaczonym minimum.
        # Wykonywane tylko jeli procentowe zapenienie jest w normie.

        result=$( echo "
            scale=2   /* dwa miejsca po przecinku */
            print $free < $min_free" | bc)


        #if [ $(expr "$free < $min_free" ) ]
        if [ $(expr "$result != 0" ) ]
        then
            echo "$filesystem ma tylko $free KB wolnego miejsca."
        fi
    fi

done

