Skip to content

By Тодор in FreeBSD, Linux, Solaris

Важно е да следим, с колко свободно пространство разполагаме. Давам пример на едно роботче писано на bash, което изпраща e-mail (sms), когато свободното пространство на посочен дял от диска падне под определена граница:


#!/bin/bash

#------Configuration

#Send alert to this email address
EMAIL="35988xxxxxxx@sms.mtel.net"

#Partition which should be monitored
PARTITION="/dev/md1"

#If free space is less than this value in KB - send email
SPACELIMIT=1000000

#How long to wait in minutes to send another email
REMINDTIMEOUT=120

#Time format used in the message
TIME=`date +"%d.%m.%y %H:%M"`

#The marker prevents sending of too many messages
#Must be unique for each partition monitored.
#Add different numbers at the end of the file name for each partition
MARKER="/tmp/freespacereached"

#------END of Configuration

if [ -f $MARKER ]; then
    MARKERAGE=$(($((`date +%s`-`stat -c %Z $MARKER`)) / 60))
else
    MARKERAGE=0
fi

if [ $MARKERAGE -gt $REMINDTIMEOUT ]; then
    rm -f $MARKER
fi

FREESPACE=`df | grep "$PARTITION" | awk '{ print $4}'`
# Prevent crash in case of wrong partition configuration or data extraction
FREESPACE=$((FREESPACE+0));

if [ $FREESPACE -lt $SPACELIMIT ]; then
    MSG="$TIME - Spacecheck WARNING! - $((FREESPACE/1024))MB available on $PARTITION"
    if [ ! -f "$MARKER" ]; then
        echo $MSG | mail $EMAIL
        touch $MARKER
    fi
else
    rm -f $MARKER
fi

Изпълнението на скрипта се предоставя на cron, като се създава конфигурационен ред, подобен на този:


0 9-21 * * * /scripts/spacecheck.sh

Т.е. прави проверка на всеки кръгъл час, но няма да ни безпокои през нощта 😉

Машината, на която се изпълнява трябва да може да изпраща електронна поща, т.е. трябва да има работещ sendmail, postfix или друга алтернатива.

Comment Feed

No Responses (yet)



Some HTML is OK

or, reply to this post via trackback.