Serverstatus mit einem Shell-Script

Wie erstelle ich ein eigenes Shell-Skript, welches mir die aktuellen Daten vom Server zuschickt?

Als Grundlage, um uns eine Statusmeldung vom Server zuschicken lassen zu können, brauchen wir einen Mailserver. Dieser sollte bereits installiert und konfiguriert sein.

Sollte noch kein Mailserver existieren lohnt sich ein Blick auf den folgenden Artikel: Ohne Mailserver E-Mails versenden (http://linuxnetz.wordpress.com/2009/09/20/ohne-mailserver-emails-per-shell-script-versenden-smtp-over-tls/)

Kommen wir nun aber zum eigentlichen Skript. Wir möchten gerne per Mail alle aktuell angemeldeten User (Linux Befehl: who), die aktuelle Festplattenauslastung (Linux Befehl: df –h) und die Onlinezeit des Servers (Linux Befehl: uptime) zugeschickt bekommen. Das Skript kann individuell angepasst werden. So kann man später auch weitere Befehlsergebnisse per Mail zugeschickt bekommen.

#!/bin/bash
# email subject
SUBJECT=“SET-EMAIL-SUBJECT“
# Email text/message
EMAILMESSAGE=“/tmp/emailmessage.txt“
who > $EMAILMESSAGE
uptime >> $EMAILMESSAGE
df -h >>$EMAILMESSAGE
mail -s „$SUBJECT“ mail@example.com < $EMAILMESSAGE
 
 
Unter SUBJECT wählen wir einen Betreff der E-Mail.
Die Datei „emailmessage.txt“ gilt als temporärer Ort, wo wir die Ausgaben unserer Befehle speichern, bevor wir ihn anschließend per Mail verschicken.Anschließend rufen wir die oben genannten Befehle „who“, „uptime“ und „df –h“ auf. Die Ausgabe der Befehle wird in die Datei „EMAILMESSAGE“ gespeichert. Weitere Befehle können einfach hinzugefügt werden. Als Beispiel alle laufenden Prozesse:

„top >> $EMAILMESSAGE“

Zum Schluss wird mit dem Befehl „mail -s „$SUBJECT“ mail@example.com < $EMAILMESSAGE“ der Inhalt der „EMAILMESSAGE“ ausgelesen und per Mail an mail@example.com versandt. Eventuell könnte es passieren, dass die Mail, da der Absender nur als „root“ betitelt wird, im Spamordner landet.
Mit „./SCRIPTNAME.sh“ können wir die Funktionalität des Script überprüfen. Es sollte dann eine Mail an den Empfänger geschickt werden.

Ich möchte nebenbei noch kurz auf den Unterschied von „>“ und „>>“ eingehen. Bei „>“ wird die voranstehende Ausgabe an den Anfang der Datei geschrieben und deren vorheriger Inhalt wird gelöscht. Mit „>>“ fügen wir die Ausgabe an das Ende der Datei an. Mit „who > $EMAILMESSAG“ löschen wir also den vorherigen Inhalt der Datei um sie mit unserem neuen Inhalt zu füllen.

Nun kann man das Script abspeichern und per Cron in regelmäßigen Abständen aufrufen lassen, damit man immer über aktuelle Statusmeldungen informiert ist.

Das könnte dich auch interessieren …