2008-02-11, 10:09
#1
Delar med mig ett script jag gjorde i morse.
Stört mig länge på när diskutrymme blir fullt på servern och jag inte har
orkat kontrollera servern emellanåt
Här har ni ett script som bevakar diskutrymmet på servern.
Den körs via crontab och skickar email till administratören om
något filsystem ökar mer än 90% av dess kapacitet.
Hoppas någon annan får glädje av den också.
Stört mig länge på när diskutrymme blir fullt på servern och jag inte har
orkat kontrollera servern emellanåt

Här har ni ett script som bevakar diskutrymmet på servern.
Den körs via crontab och skickar email till administratören om
något filsystem ökar mer än 90% av dess kapacitet.
Kod:
#!/bin/sh
# set -x
# Shell script to monitor or watch the disk space
# It will send an email to $ADMIN, if the (free available) percentage of space are >= 90%.
# Requirements: You need bash-shell and functioning mail server.
# ---------------------------------------------------------------------------------------------------- ----
#
# Set admin email
# In /root/.mailrc you will find admins group defined
ADMIN="admins"
#
# set alert level, 90% is default
ALERT=90
#
# Exclude list of unwanted monitoring, if several filesystems then use "|" to separate the filesystems.
# Also possible to exclude words like "Filesystem" and so on.
# An example: EXCLUDE_LIST="/dev/hdd1|/dev/hdc5"
EXCLUDE_LIST="^Filesystem|tmpfs|cdrom|none|/auto/ripper|/auto/backup"
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::
#
# Main program start
#
function MAIN() {
while read df_output;
do
USED=$(echo $df_output | cut -d'%' -f1)
FILESYSTEM=$(echo $df_output | awk '{print $2}')
if [ $USED -ge $ALERT ] ; then
echo "Running out of space \"$FILESYSTEM ($USED%)\" on server $(hostname), $(date)" >> /tmp/disk.status.txt
fi
done
}
#
# Main program END
#
df -H | grep -vE "$EXCLUDE_LIST" | awk '{printf("%s \t %s\n",$5,$6)}' | MAIN
# Send an email and delete status file
if [ -f /tmp/disk.status.txt ] ; then
mail -s "Alert: Almost out of disk space on server $(hostname)" $ADMIN < /tmp/disk.status.txt
rm /tmp/disk.status.txt
fi
Hoppas någon annan får glädje av den också.