Shell Script zur überwachung von Server HDD überlauf

M

mele

Grünschnabel
Hallo zusammen,

ich soll für einen Server ein Shell Script schreiben, welches bei einer bestimmten belegung der HDD eine e-Mail an den Admin schreibt. Hab mir schon ein kleines Tut bezüglich der Shell Programmierung durchgelesen, weiß aber nich so recht, wie ich anfangen soll.
Kann mir da jemand helfen?

mfg

mele
 
Moin,

z.B. ein moeglicher Ansatz:

mit df, grep und cut die Belegung auslesen, testen ob die Belegung > x ist, und wenn ja die mail schreiben (vermutlich mit mail, habe ich selbst nie genutzt).

mfg,
bytepool
 
Hab da mal was gebaut. :)
Code:
#!/bin/bash

MAX=90
DEVICE=/dev/sda7
VALUE=$(df -h | grep $DEVICE | cut -d "%" -f1 | cut -c$(echo $(($(df -h | grep $DEVICE | cut -d "%" -f1 | wc -c)-2)))-)

if [ "$VALUE" != "00" ]; then

   if [ $VALUE -gt $MAX ]; then
      echo "waaaah Alarm";
   else
      echo "Alles tutti....";
   fi

else
   echo "Platte voll"
fi
Zwar nicht sooo sauber, aber läuft. ;)
Das Script nimmt den Prozentwert zum Prüfen, und entscheidet dann was ausgegeben wird. Da müsste man nur noch den Email Versand noch einbauen.
 
Zuletzt bearbeitet:
vielen dank!! supi!! werds jetzt mal mit der mail noch versuchen!!! danke, danke!!:))
 
Du hast ja zwar schon eine Lösung, bekommst aber meine auch noch :)

Code:
#####################CODE######################
#!/bin/sh
# ShellScript zum überprüfen des freien HDD-Platzes
# Sendet ein E-Mail an $ADMIN, wenn verbrauchter HDD-Speicher 90 % erreicht
# -------------------------------------------------------------------------
# admin-mail einstellung um mails zu erhalten
ADMIN="deinemailaddy@example.com"
# set alert-level 90 % standard
ALERT=10
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
do
  #echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge $ALERT ]; then
    echo "Speicherplatz zu gering auf \"$partition ($usep%)\", von $(hostname) am $(date)" |
     mail -s "Alert: Speicherplatz zu gering, $usep % voll auf $partition" $ADMIN
  fi
done
#####################CODE ENDE#################

Speichern als discmon.sh
Code:
#chmod +x discmon.sh
ausführen

per crontab für zeitlich gesteuerten check speichern.

Falls bei einem Testlauf die Fehlermeldung
Code:
./discmon.sh: line 14: [: Ben: integer expression expected
erscheint , ist die Formatierung von df -H auf mehrere Zeilen aufgeteilt, was somit das auslesen der Spalten nutzlos macht.
Um dies zu umgehen die Zeile

Code:
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
mit
Code:
df -HP | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
austauschen.

Für ein besseres Debugging kann auch die Zeile
Code:
#echo $output
auskommentiert werden.

mfg

T-One
 
also für solche aufgaben .... überwachen von systemspezifischen dingen wie hdd, mem, cpu etc. oder daemons etc. benutze ich immer monit.
Wenn man mal mit gearbeitet hat, ist es ein kinderspiel das ein zu richten. Du solltest dir das mal anschaun ... vorallem sehr effektiv bei mehreren servern.
 
Oder man nimmt für etwas sehr einfaches eben was sehr einfaches wie logwatch.

Oder man erfindet halt zum x-ten Mal das gleiche triviale script.
 
Er _soll_ das Skript schreiben, daher dürfte die Vermutung nahe liegen, dass dies im Rahmen einer Ausbildung passiert und da kann man nunmal nicht einfach sagen: "Dafür gibt's doch Monit."
 

Ähnliche Themen

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

Hilfe bei backup-script

Heimserver Konfiguration für Ubuntu Server?!

ssh-client von root-server zu root-server verbinden

Last mit etc/passwd anzeigen lassen

Zurück
Oben