Prof. Dr. Franz Schweiggert Sektion Angewandte Informationsverarbeitung 19. Mai 1999
Susanne Schmucker und Michael Lehn Blatt 5/6


[c]



Implementierung kleiner Datenbanken unter UNIX I (SS 1999)


Abgabetermin: 2. Juni 1999 (2 wöchig)

Massen-eMails, noch persönlicher ! (7 Punkte)

Erweitern Sie das Massen-Mail-Tool:
Das Tool soll von stdin eine Tabelle einlesen, deren erste Spalte den Empfänger enthält. Die zu verschickende Datei kann Tags der Form #1, #2, .. enthalten, die entsprechend mit den restlichen Spalten ersetzt werden sollen.
Beispiel:
$thales cat cd_verl.data
lehn:Lehn:Herr:Back and Black:AC/DC:01.02.1999:5 DM
schwedi:...
$thales cat cd_verl.data | rmail \: ermahnung.txt "Mahnung"
Ich sollte dann etwa folgende Mail erhalten:
Sehr geehrter Herr Lehn,

seit 01.02.1999 haben Sie sich MEINE CD
	"Back and Black (AC/DC)"
ausgeliehen.
Ich moechte Sie hiermit bitten, mir dieselbe, sowie
zusaetliche 5 DM, auszuhaendigen.

mfg 
	Tim Steinel

2 DELETE (7 Punkte)

Schreiben Sie ein Shell-Skript, das es dem User erlaubt, einen Datensatz aus der Tabelle zu löschen. Das Programm DELETE erwartet als erstes Argument den Tabellennamen und als folgende Argumente die Schlüsselwerte. Beispiel:
thales$ cat personen.header
#
email#Name        
email
thales$ DELETE personen lehn@mathematik.uni-ulm.de 
loesche: lehn@mathematik.uni-ulm.de#Michael Lehn
thales$

3 UPDATE (7 Punkte)

Schreiben Sie ein Shell-Skript, das es dem User erlaubt, Datensätze, die bestimmte Attributwerte aufweisen, zu ändern. Die Syntax könnte so aussehen:
$thales UPDATE mitglieder Anrede=1 -- Anrede=Herr
$thales UPDATE mitglieder Anrede=2 -- Anrede=Frau
$thales UPDATE mitglieder Name="Lehn" -- Vorname="Michael Christian" Ort="Ulm"
Die Argumente vor - bestimmen welche Zeilen geändert werden sollen, die nachfolgenden, wie sie geändert werden sollen.

4 Daten konvertieren (7 Punkte)

Um unser Mail-Tool für alltägliche Probleme nutzen zu können legen Sie sich eine Tabelle mit eMail-Adressen und den dazugehördenen Name an:
thales$ CREATE person \# -email Name
Jetzt müssen Sie die Tabelle nur noch mit bekannten eMail-Adressen füllen, da Sie aber vor lauter Shell-Skript-Programmierung kaum noch die Finger bewegen können, denken Sie sich: lieber 10 Zeilen Code als 200 Zeilen Plain-Text. Den ersten Gedanken, die Tabelle mit Daten der passwd zu füllen verwerfen Sie, da Sie die meisten eMail-Adressen dort nicht interessieren.
Aber dann kommen Sie auf die geniale Idee, die eMail-Adressen ihrer inbox-Datei zu verwenden.
Schreiben Sie ein Shell-Skript, das aus der inbox-Datei die eMail-Adressen und die Namen aller Absender filtert und in person.data schreibt (natürlich im richtigen Format).
Meine inbox-Date heißt: /var/mail/lehn und sieht so aus:
m akanamu Mon Apr 19 10:01 MET 1999
Return-Path: <akanamu>
Received: from localhost by thales.mathematik.uni-ulm.de (5.x/UniUlm-2.0m)
        id AA29499; Mon, 19 Apr 1999 10:01:04 +0200
Date: Mon, 19 Apr 1999 10:01:04 +0200 (MET DST)
From: Andreas Kanamueller <akanamu>
X-Sender: akanamu@thales
To: Michael Lehn <lehn>
Subject: Subway to Sally
Message-Id: <Pine.GSO.3.95.990419095704.25467D-100000@thales>
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Content-Length: 480
Status: RO
X-Status:

Hi Michael,
hab auch eine Karte fuer dich besorgt.
kannst du mir bescheid sagen, ob du auch am freitag (20 Uhr gehts los)
da bist, oder ob ich die karte anderweitig verscheuern muss?
hoffe doch, du kommst mit (klAUs geht auch mit)
Anti  
.
.
Interessant ist die Zeile From: Andreas Kanamueller <akanamu>, allerdings gilt i.a. nicht, daß der Name vor der eMail-Adresse steht.

5 Projekt: Interaktiver eMail-Verteiler (30 Punkte)

Da Sie von der 1. Aufgabe begeistert sind, beschliessen Sie, diese auszubauen.
Sie erzeugen drei Tabellen: personen, gruppe und r_gruppe_person, wobei die Tabelle personen als Schlüssel die eMail-Adresse enthält. An eine Gruppe soll eine Mail ala Aufgabe 1 geschickt werden, dazu wählt der User eine Gruppe, eine Schablone (Datei mit #1, #2, ..-Tags) aus und gibt ein Kommando wie z.B. cat cd_verl.data ein (Interessant wird's natürlich erst bei der Eingabe von Kommandos, die mehrere Tabellen mit der persnen-Tabelle verknüpfen).
Schreiben Sie eine interaktives Shell-Tool, das es erlaubt:



Michael Lehn 5/19/1999