Skrypt sprawdzający ilość wolnego miejsca na partycjach

Monitoring wolnego miejsca na partycjach systemu Linux jest kluczowe do utrzymania ciągłości działania. Poniży skrypt należy dodać do crona,np do /etc/cron.daily. Skrypt sprawdza partycje dyskowe pod względem zajętości miejsca, jeśli któraś przekracza 90% wolnego miejsca. Skrypt wysyła wiadomość email na wskazany adres.

Do poprawnego działania skryptu potrzebna jest paczka mailx np heirloom-mailx

Instalujemy mailx

apt-get install heirloom-mailx

Konfiguracja

Następnie konfigurujemy skrypt zmieniając dane

od_uzytkownika@… -> od kogo otrzymamy wiadomość

smtp="mail.betasoft.pl:587" -> nasz serwer SMTP oraz port

powiadomienie@… -> użytkownik z autoryzacji serwera pocztowego

smtp-auth-password="hasło" -> hasło autoryzacji

do_kogo@… -> do kogo wysłać informację

Skrypt

#!/bin/sh
# Przypisz skrypt do konta powiadomienia w edokumentach zainstalowanego u klienta
# wiadomosc powinna być wysłana do nas i do administratora
df -HlP | grep -vE '^Filesystem|System|tmpfs|cdrom|none' | awk '{ print $5 " " $1 }' | while read output;
    do
      echo $output
      usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
      partition=$(echo $output | awk '{ print $2 }' )
     
        if [ $usep -ge 90 ]; then
        echo "Kończy się przestreń dyskowa na partycji \"$partition ($usep%)\" host: $(hostname) wykonano: $(date)" |
	mailx -v -r "od_uzytkownika@edokumenty.eu" \
		 -s "ALERT: brakuje miejsca na: $partition ($usep%)" \
		 -S smtp="mail.betasoft.pl:587" \
		 -S smtp-use-starttls \
		 -S smtp-auth=login \
		 -S smtp-auth-user="powiadomienie@edokumenty.eu" \
		 -S smtp-auth-password="hasło" \
		 -S ssl-verify=ignore  \
		do_kogo@edokumenty.eu

        fi
    done

Kolejne osoby do skryptu dodajemy na następujący sposób

do_kogo@edokumenty.eu \ do_kogo2@edokumenty.eu

Poprawiony skrypt dla pakietu z Debian 9

#!/bin/sh
# Przypisz skrypt do konta powiadomienia w edokumentach zainstalowanego u klienta
# wiadomosc powinna być wysłana do nas i do administratora
df -HlP | grep -vE '^Filesystem|System|tmpfs|cdrom|none' | awk '{ print $5 " " $1 }' | while read output;
    do
      echo $output
      usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
      partition=$(echo $output | awk '{ print $2 }' )
     
        if [ $usep -ge 90 ]; then
        echo "Kończy się przestreń dyskowa na partycji \"$partition ($usep%)\" host: $(hostname) wykonano: $(date)" |
	s-nail -v -r "od_uzytkownika@edokumenty.eu" \
		 -s "ALERT: brakuje miejsca na: $partition ($usep%)" \
		 -S smtp="mail.betasoft.pl:587" \
		 -S smtp-use-starttls \
		 -S smtp-auth=login \
		 -S smtp-auth-user="powiadomienie@edokumenty.eu" \
		 -S smtp-auth-password="hasło" \
		 -S ssl-verify=ignore  \
		do_kogo@edokumenty.eu

        fi
    done