Inhalt

6. Wie automatisiere ich das Verbindungsverfahren?

Die automatische Erledigung von News und EMail ist unter Linux ziemlich leicht einzurichten.

Als Allererstes solle man eine /usr/lib/ppp/ppp-on erstellen, die die Verbindung zum ISP herstellt. Oft enthält diese Datei nur folgendes:

/usr/sbin/pppd
Weitere Angaben stehen in /etc/ppp/options:
connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400

Um die Verbindung zu beenden, benutzt man die mitgelieferte Version von /usr/lib/ppp/ppp-off.

Hat man überprüft, daß diese zwei Skripte funktionieren, dann muß man sich Skripte schreiben, die die verschiedenen Aufgaben erledigen. Das Skript, das EMail holt, wurde schon beschrieben und es wird angenommen, daß es als /home/dirk/pop gespeichert ist.

Ein Skript für den Austausch von EMail kann dann als /root/mail so erstellt werden:

#! /bin/sh
#
# EMail - Austausch
# timeout von 10 Minuten:
TIMEOUT=600
DT=10

# sendmail anwerfen:
sendmail -q &

# Post holen:
su dirk -c /home/dirk/pop

# warten, bis sendmail fertig ist:
t=0
while ! mailq | grep -q "Mail queue is empty"; do
    t=$[$t+$DT]
    if [ $t -gt $TIMEOUT ] ; then
     echo "sendmail -q timeout ($TIMEOUT).."
     exit 1
    fi
    sleep $DT
done

exit 0

Das Skript zum Austausch von News kann als /usr/lib/news/news abgelegt werden:

#!/bin/sh
#
# News - Austausch
# muss als Benutzer news gestartet werden
cd /usr/lib/news

#ausgehende Nachrichten sammeln (C News):
/usr/lib/newsbin/input/newsrun < /dev/null

#News austauschen:
/usr/lib/newsbin/newsx acme news.acme.net

#und die eingehenden Nachrichten intern uebergeben:
/usr/lib/newsbin/input/newsrun < /dev/null
Es fehlt noch ein Skript, daß die einzelnen Teile verbinden. Es kann als /root/news+mail gespeichert werden:
#!/bin/sh
#
# Austausch von News und EMail
# muss als Benutzer root gestartet werden
#
if ! /usr/lib/ppp/ppp-on; then
    exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15

#News und EMail austauschen:
/root/mail &
su news -c ~news/news
wait

#aufhaengen..
/usr/lib/ppp/ppp-off

#eingehende Nachrichten intern uebergeben (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

exit 0

Es ist ziemlich einfach, eine Erweiterung zum obigen Skript zu erstellen, so daß nur dann eine Verbindung hergestellt wird, wenn es ausgehende EMail und News gibt. Nennen wir es /root/news+mail.cond und beachten, daß der Name des ausgehenden News-Spools angepaßt werden muß:

#!/bin/sh
#
# Austausch von News und Email, wenn ausgehende News oder EMail vorhanden
# (C News Spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
    ! ( mailq | grep -q "Mail queue is empty"); then
     /root/news+mail
fi

Bleibt noch übrig, anzugeben, wann das alles passiert. Dazu führt man als root den Befehl crontab -e aus. Nehmen wir an, wir wollen den Austausch von News und EMail morgens um 7 Uhr durchführen und dann jede vierte Stunde, wenn es ausgehende EMail und News gibt:

00 7      * * *     /root/news+mail
00 11,15,19,23 * * *     /root/news+mail.cond
Man sollte sich versichern, daß alle Teile durchprobiert sind, bevor man sie verbindet. Später kann man dann weitere Aufgaben hinzufügen, wie das Stellen der Uhr (über ntpdate) und das automatische Aktualisieren (spiegeln) von lokal geführten WWW- und FTP-Dateien beim ISP (über make und ftp).

ALT: Wenn man es bevorzugt, kann man das Verfahren auch umdrehen. Sobald eine PPP-Verbindung hergestellt wird, wird das Skript /etc/ppp/ip-up ausgeführt. Hier kann man alles hineinschreiben, was man braucht, um den Austausch von EMail und News durchzuführen. Weitere Details finden sich in man pppd.

ALT: Es ist auch möglich, PPP-Verbindungen automatisch aufbauen zu lassen, sobald Daten über das Netz gehen. Dies ist in vieler Hinsicht eine elegantere Lösung, hängt aber sehr von einer guten Konfiguration ab, damit nicht zu viele (und damit teure) Verbindungen hergestellt werden. Weitere Informationen findet man in:

http://www.dna.lth.se/~erics/diald.html

Das Programm diald ist hier erhältlich:

sunsite.unc.edu/pub/Linux/system/network/serial/diald-0.16.tar.gz

Am gleichen Ort findet man auch weitere Variationen zum Thema PPP-Verbindungen.


Inhalt