Server im Detail

In Listing 1 finden Sie den termin-server aufgeschlüsselt. Aus Platzgründen haben wir die Kommentare, die in den Skripten auf der CD selbstverständlich enthalten sind, für den Abdruck entfernt und die Zeilen durchnumeriert.

Der Mail-Versand an den Benutzer erfolgt in der Funktion TerminWarnung von Zeile 3 bis 12. Die Funktion erwartet sechs Parameter. Als erstes muss die Mail-Adresse des Empfängers und dann alle fünf aufgeschlüsselten Felder der betreffenden Terminzeile übergeben werden. Der Versand erfolgt in Zeile 9 bis 11 über das Programm mail, ein rudimentäres Mail-Programm, das sich hervorragend über Skripte steuern lässt. Sind beim Termin zusätzliche Mail-Adressen angegeben, stehen diese in $6 und müssen in der Form -c Adresse,Adresse,... als Parameter an mail übergeben werden. Dementsprechend wird in Zeile 6 der Parameter für mail aufgebaut und in Zeile 9 gleich als erstes angehängt.

Die Zeilen 9 bis 11 enthalten noch weitere Besonderheiten: So wird das Datum, bei Übergabe in $2 gespeichert, mittels date-Aufruf in die in Deutschland übliche Schreibweise mit Wochentag, Tag, Monat und Jahr gebracht. Die ausführliche Beschreibung des Termins wird über den Eingabeblock "<< EOF … EOF" an mail weitergereicht. Prinzipiell ginge dies auch per echo und Pipe, beim Eingabeblock brauchen wir uns aber nicht um das Escapen von Anführungszeichen oder Trennzeichen zu kümmern.

IFS zum Ersten

Bei Aufruf von termin-server wird die Funktion zunächst übersprungen, der erste Befehl steht in Zeile 14: Falls keine Terminliste existiert oder sie nicht lesbar ist, wird die Fehlermeldung aus Zeile 15 automatisch von Cron per Mail an den User verschickt.

In den Zeilen 18 bis 22 wird die Terminliste eingelesen, wobei die oft verkannte Variable IFS eine entscheidende Rolle spielt: Mit dieser Variablen wird festgelegt, welche Zeichen die Bash als Trennung von Zeilen, Elementen oder Parametern interpretiert. Standardmäßig sind das Leerzeichen, Tabulatoren ('\t') und Zeilenumbrüche ('\n'). Dies gilt auch für das Einlesen von Arrays per read - Leerzeichen und Tabulatoren werden als Trenner der einzelnen Elemente der Zeile und Zeilenumbrüche als Abschluss einer Zeile interpretiert.

Unsere Terminliste soll zunächst komplett eingelesen und zeilenweise in Arrays gespeichert werden. Da read nur bis zum ersten Zeilenumbruch arbeitet, müssen wir die Umbrüche ersetzen - in unserem Fall durch Returns ('\r'). Dies geschieht in Zeile 21, wobei durch das grep-Kommando zusätzlich noch Kommentare mit Raute am Anfang einer Zeile entfernt werden. Damit liest read zwar die ganze Datei, jedoch zunächst in eine einzelne Variable. Um jede Terminzeile in eine eigene Variable eines Arrays gespeichert zu bekommen, verwenden wir read -a, und setzen kurzerhand die Trenner-Variable IFS auf '\r'.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Portabel programmieren mit Dialog, Gdialog und Kdialog
    Bash-Skripte sind meist nur für die Verwendung auf der Kommandozeile gedacht und schrecken Nicht-Experten mit unübersichtlichen Ausgaben ab. Das muss aber nicht so sein: Die Programme Dialog, Gdialog und Kdialog verstecken die Kommandozeile vollständig vor dem Benutzer.
  • Gut aufgestellt
    Admidio verwaltet nicht nur plattformunabhängig Mitgliederdaten, sondern managt auch Veranstaltungstermine samt Zeiten und Teilnehmern elegant und online.
  • Termine und Aufgaben immer synchron halten
    Ein kleines Applet bringt Ordnung in Termine und Aufgaben und synchronisiert zugleich PC und Smartphone, sodass Sie immer auf dem neusten Stand sind.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 1 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 1 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...
Tinte sparen bei neuem Drucker
Lars Schmitt, 30.11.2017 17:43, 2 Antworten
Hi Leute, ich habe mir Anfang diesen Monats einen Tintenstrahldrucker angeschafft, der auch su...