Adressen, Telefonnummern, Geburtstage, Notizen, ... ein sehr inhomogener
Haufen brisanter Daten, der sich einerseits nicht einfach in eine
flache Datenbankstruktur stopfen läßt,
nicht für jeden ohne weiteres aber unterwegs auch
mal mit den Bordmitteln eines Gastrechners einsehbar sein soll ...
348 Zeilen Pythoncode später hat man das Problem halbwegs Griff.
Die Idee stammt übrigens von Reinhard Wobst,
der ein ähnliches Projekt
schon mal auf "ksh" in der IX formuliert hat.
Zunächst braucht man ein initiales File, das man mit einem normalen Texteditor anlegt und das in etwa so aussieht:
-- Faulpelz, Hans Firma: Hack & Run GmbH Geb: 01.08.1976 Notiz: Perl Programmierer, License to chill -- Bond, James mTel: 0174 42007007 Firma: Her Majesty's Secret Service Notiz: License to kill -- ... u.s.w.u.s.f.Das Programm wird ganz einfach mit
$ python awadr.py meineadressen.txtgestartet. Jetzt zeigt sich folgendes im Terminal
file: meinadressen.txt, size: 208, entries: 2 status: unmodified, search: '.', case sensitive, matches: 2 filter: [] adr[/ednshvq]>mit h ENTER bekommt man die Hilfe angezeigt
/[regexp] sucht die Einträge, die auf "regexp" passen (*) f[a1|a2|..] filtert die Muster a1 und a2 im / Kommando e[regexp] öffnet die Einträge, die auf "regexp" passen im Editor (*) d[regexp] löscht die Einträge, die auf "regexp" passen (*) n[name] Erzeugt einen neuen Eintrag, der mit "name" beginnt s zeigt den aktuelle Dateistatus an i schaltet case-senitive Suche an und aus v Anzeige der Programmversion q beendet das Programm (*) Wenn "regexp" weggelassen wird, wird das Ergebnis des letzten "regexp"-Ausdrucks verwendet.Wenn man also den Eintrag von James anzeigen will, tippt man:
/Jamesein, während man die Jungs mit Lizenzen mit dem regulären Ausdruck
/(ch|k)illausfindig macht. Die Daten der neuen Bekanntschaft fügt mit
nRosamundehinzu.
Als Editor verwendet das Programm standardmäßig vi und als Anzeigeprogramm less. Um mit nedit zu editieren und die Daten mit more anzuzeigen, wird awadr.py so gestartet:
python awadr.py -e nedit -p more meineadressen.txt
Um Neugierige von seinem Datenschatz auszuschließen, verwendet man am besten die symmetrische Verschlüsselung von gpg. Die Idee stammt ebenfalls von Reinhard. Somit muss man seinen Secret-Key-Ring nicht unbedingt durch die Gegend schleppen.
gpg -c meineadressen.txtAuf der Platte befindet sich jetzt zusätzlich das verschlüsslelte File meineadressen.txt.gpg. Man lädt es mit
python awadr.py meineadressen.txt.gpgund beantwortet die Frage nach dem Passwort. Mit dem File kann man jetzt ganz normal arbeiten. Beim Speichern wird das File meineadressen.txt.gpg zunächst gesichert (*.bak) und die neue Version mit dem gleichen Passwort auf die Platte geschrieben.
awadr.py "merkt sich" das Passwort im Speicher während der gesamten Sitzung. Damit entfällt die nochmalige Abfrage beim evtl. Speichern nach einer Änderung. Auch die Daten des Files liegen zur Laufzeit unverschlüsselt im Speicher.