Eine externe Datei mit einer Liste von Programmparametern abarbeiten, bis keine Einträge mehr gefunden werden.
Beispiel: in einer Datei *liste* stehen untereinander IP-Adressen, die eine nach der anderen angepingt werden sollen (einmal).
while read IPADRESSE
do
ping -c 1 $IPADRESSE
done < liste
Tipp: stehen 2 oder 3 Parameter nebeneinander in der Liste (getrennt durch Leerzeichen), dann einfach den read-Befehl anpassen:
read PARAMETER1 PARAMETER2 PARAMETERx
Aus einem Shellscript heraus eine Email verschicken
Eine sehr nützliche Angelegenheit, um z.B. Berichte über Backupvorgänge
zu verschicken. Damit ist eine Fernüberwachung des Systemes möglich.
Ich habe mir eine wöchentliche Systemmeldung aller meiner Server gebaut:
Festplattenstatus, Logdateien etc.
Einen laufenden Emailserver (am besten und schlanksten postfix) vorausgesetzt
(der einen normalen POP3 als Relay benutzt und selbst nicht als Relay benutzt
werden kann, Sicherheit!!) kann man den Befehl "sendmail" nutzen, um von der
Konsole aus Mails zu verschicken. Unter Debian ist sendmail meist ein Link auf
"exim", denn das Monster sendmail für jeden Rechner aufzusetzen wäre Wahnsinn.
Ich selber nutze jedoch "mutt":
mutt -s "Betreff" -i body empfänger -a anhang <.
Als Body nutze ich eine Datei, in die ich vorher per Ausgabeumleitung den Emailtext generiert habe:
date > body (packt das Datum rein)
echo "Irgendwas" > body
Als Anhang packe ich z.B. die wichtigsten Logdateien per gzip zusammen und schicke
sie mit. Der Empfänger ist bei mir immer root, die reale Emailadresse (ich@meinedomain.de)
ist in einer Datenbank hinterlegt (aliases). Postfix tauscht beim Versenden root gegen
die richtige Adresse und nutzt den angegebenen Relayserver als Emailserver (kanonisches Senden).
(eine Anleitung zum Aufsetzen von postfix für diese Zwecke kann ich auf Anfrage auch liefern)
Und jetzt der entscheidende Trick: am Ende des Aufrufes von "mutt" hat der aufmerksame Leser
möglicherweise das "<." bemerkt. Damit wird Mutt veranlaßt, die Email ohne Nachfrage einfach
zu verschicken, keine weiteren Eingaben abzufordern und Fehlermeldungen ins Syslog zu ballern.