lug-in.de
Linux User Group Ingolstadt e.V.
Startseite
Der Verein
Technikecke
Mailingliste
Kalender
Impressum

Login

LUG IN Stammtisch Reminder - Allgemeine Dokumentation

Einführung

Kurzbeschreibung

Jeder, der sich mit seiner E-Mailadresse in die LUG-IN Mailingliste eingetragen hat, soll am Freitag vorher, darüber informiert werden, dass am kommenden Montag wieder der zweiwöchige Stammtisch abgehalten wird. Natürlich soll dieser E-Mail zu entnehmen sein, wo und wann sich die Linux-Begeisterten Benutzer treffen. Man kann das manuell machen und jeden zweiten Freitag an die Mailingliste eine E-Mail schreiben oder es gibt ein Programm, dass diese Aufgabe erledigt. Genau das ist der LUG-IN Stammtisch Reminder.

Dieses kleine Programm wird jeden Freitag gestartet und prüft, ob eine ungerade Kalenderwoche vorliegt. Ist das der Fall, so wird eine vordefinierte E-Mail über den internen SMTP-Server verschickt. Zusätzlich gibt es die Funktion, einmalig eine Nachricht zu hinterlegen, die für die nächste „Erinnerungsaktion“ verschickt werden soll und danach gelöscht wird.

Internals

Damit jeder auch versteht wie der LUG-IN Stammtisch Reminder umgesetzt wurde, werden im nachfolgenden, technische Details des Programmes erläutert. Es wird auch detailliert auf das Verhalten eingegangen.

Technologien

Der LUG-IN Stammtisch Reminder ist ein Python 2.5.x-Skript, dass über den lokalen SMTP-Server exim4 E-Mails an den Mailverteiler mailman verschickt. Genauer gesagt, werden die E-Mails an die Adresse „ lug-in@lists.lug-in.de “ geschickt. Gestartet wird das Skript durch den lokalen cron-Daemon.

Dateien

In nachfolgender Tabelle sind die spezifischen Dateien aufgelistet. Man beachte, dass die Dateinamen für den Nachrichtentext je nach Konfiguration in der Skript-Datei variieren können.

Absoluter Dateiname

Beschreibung

/root/lugin-reminder/dontRemindThisTime

Einmalige Blockerdatei ohne spezifischen Inhalt

/root/lugin-reminder/dontRemindDates

Datei in denen Datumswerte angeben, wann keine Erinnerung verschickt wird

/root/lugin-reminder/lug-in-stammtisch-reminder.py

Ausgeführte Skript-Datei (+Konfigdatei)

/root/lugin-reminder/specialreminder.txt

Einmalig zu schickender Nachrichtentext

/root/lugin-reminder/defaultreminder.txt

Standardnachrichtentext

/var/log/lugin-stammtisch-reminder.log

Log-Datei mit Statusmeldungen

/etc/cron.d/lug-in-stammtisch-reminder

Cron-Job Definition

Konfiguration

In der Skript-Datei steht im Kopf der Quelltextdatei, wie dieses Python-Skript zu konfigurieren ist und was dabei beachtet werden muss. Nichtsdestotrotz werden hier die Konfigurationsmöglichkeiten nochmals erklärt.

Option

Beschreibung

EinmalverhinderDatei

Existiert diese Datei (mit welchem Inhalt auch immer), wird das Versenden einmalig verhindert. Danach wird die Datei gelöscht.

VerhinderListenDatei

In dieser Datei stehen die Tage als Datumswert (im ISO Format yyyy-MM-dd), an denen der Versand verhindert wird.

Textdatei

In dieser UTF-8 kodierten Textdatei steht der Nachrichtentext, der im Normalfall verschickt werden soll.

Alternative Textdatei

In dieser UTF-8 kodierten Textdatei steht der Nachrichtentext, der im Spezialfall verschickt werden soll.
HINWEIS: Diese Datei wird nach einmaliger Verwendung gelöscht!

Betreff

Der Betreff der E-Mail

An

An welche Adresse soll die E-Mail verschickt werden (im Normalfall „ lug-in@lists.lug-in.de “ )

Von

„Von“-Feld der E-Mail Nachricht

SMTP-Server

IP-Adresse oder Hostname des SMTP-Servers

SMTP-Benutzer

(nicht benötigt auf localhost)

SMTP-Passwort

(nicht benötigt auf localhost)

Anmerkung zur "VerhinderListenDatei"

Eine Beispieldatei würde so aussehen:

# Zeilen die mir einem 'Hash'-Zeichen('#') beginnen werden ignoriert
# Am 18. Februar 2045 wird keine Erinnerung verschickt
2045-02-18

Konfiguration mittels einer Konfigurationsdatei

Wenn im selben Verzeichnis wie die Skriptdatei eine Datei mit Namen lugin-reminder.conf existiert, dann wird versucht, Einstellungen im INI-Textdateiformat aus dieser Datei zu lesen.

Hier ist ein Beispiel einer gültigen lugin-reminder.conf-Datei:

[addresses]
from: sender@senderhost.eu
to: receiver@receiverhost.org

[connection]
smtp-server: smtp.senderhost.eu
smtp-user: sirius
smtp-password: <secret>

[content]
body-file: defaultreminder.txt
alternate-body-file: specialreminder.txt

[skip]
one-time-skip-file: dontRemindThisTime
skip-list-file: dontRemindDates

[misc]
dry-run: yes
log-file: lugin-stammtisch-reminder.txt

Erklärung der Abschnitte/Optionen

Abschnitt/Option

Erklärung

Gültige Werte

addresses

Beinhaltet Adressinformationen

N/A

from

Absender

[E-Mail Adressen]

to

Empfänger

[E-Mail Adressen]

connection

Verbindungseinstellungen

N/A

smtp-server

Hostname des zu verwendenden SMTP-Servers

[gültige DNS-Namen]

smtp-user

Benutzername des zu verwenden SMTP-Kontos auf dem Server

[Benutzernamen]

smtp-password

Passwort des SMTP-Kontos

[Passwörter]

content

Einstellungen zum Inhalt der E-Mail

N/A

body-file

Textdatei die den Nachrichtentext enthält

[absolute Pfadangabe mit Dateiname]

alternate-body-file

Textdatei die den bevorzugten Nachrichtentext enthält

[absolute Pfadangabe mit Dateiname]

skip

Einstellungen zum verhindern von E-Mail Sendungen (z. B. wenn Stammtische ausfallen)

N/A

one-time-skip-file

EinmalVerhinderDatei

[absolute Pfadangabe mit Dateiname]

skip-list-file

VerhinderListenDatei

[absolute Pfadangabe mit Dateiname]

misc

diverse andere Einstellungen

N/A

dry-run

"Simulationslauf" normales verhalten nur nicht Senden

(yes|no)

Programm

Start

Das LUG-IN Stammtisch Reminder Python-Skript „lug-in-stammtisch-reminder.py“ wird durch den lokalen cron-Daemon gestartet, genauer beschrieben funktioniert das so:

Der cron-Daemon wird bei Systemstart geladen und kann zu einem festgelegten Zeitpunkt Programme starten. Um dem Daemon diesen Startzeitpunkt und den Befehl mitzuteilen, werden sogenannte Cron-Jobs verwendet (siehe Linux Manual Pages mit 'man 5 crontab' oder mit Google). Das sind einfache Textdateien, in denen man den Zeitpunkt/-intervall und den zu startenden Befehl definieren kann. Systemweite Jobs sind im Normalfall unter /etc/cron.d/ oder in /etc/crontab abgespeichert. Zusätzlich kann man auch bequem Shell-Skripte in die Unterordner /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly speichern um eine wiederkehrende Ausführung des Shell-Skriptes zu erreichen.

Im Rahmen des LUG-IN Stammtisch Reminders gibt es einen Cron-Job /etc/cron.d/lug-in-stammtisch-reminder in dem festgelegt ist, dass der Befehl "/usr/bin/python /root/lugin-reminder/lug-in-stammtisch-reminder.py" jeden Freitag ausgeführt werden soll.

Verhalten

Grafik1.png

Bekannte Bugs

Gibts hier

Download des Skriptes

lugin-reminder.tar.bz2 lugin-reminder.tar.bz2.sha512