Verder Terug Inhoud

6. Hoe automatiseer ik de verbindingsprocedure?

Automatische afhandeling van news en email is onder Linux heel makkelijk te implementeren.

Als eerste en voornaamste zou men een /usr/lib/ppp/ppp-on aan moeten maken waarmee de ISP-verbinding op gang wordt gebracht. Vaak zal er gewoon het volgende instaan:

/usr/sbin/pppd

Verdere specificatie zal worden uitgevoerd in /etc/ppp/options:

connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400

Gebruik de geleverde versie /usr/lib/ppp/ppp-off. om de verbinding te beëindigen.

Na de functionaliteit van deze twee scripts te hebben geschreven, moet men vervolgens scripts schrijven die de diverse taken uitvoeren. Het script om email te verzamelen is reeds eerder beschreven, en we zullen er hierbij van uitgaan dat het is geplaatst in /home/dirk/pop.

Een script om email uit te wisselen kan dan worden geproduceerd in /root/mail:

#! /bin/sh
#
# exchange mail
# 10 minutes timeout:
TIMEOUT=600
DT=10

# kick sendmail:
sendmail -q &

# retrieve mail:
su dirk -c /home/dirk/pop

# wacht totdat sendmail eindigt:
t=0
while ! mailq | grep -q "Mail queue is leeg"; do
    t=$[$t+$DT]
    if [ $t -gt $TIMEOUT ] ; then
     echo "sendmail -q timeout ($TIMEOUT).."
     exit 1
    fi
    sleep $DT
done

exit 0

Het script om news uit te wisselen, kan worden geplaatst in /usr/lib/news/news:

#!/bin/sh
#
# wissel nieuws uit
# moet worden gedraaid als news:
cd /usr/lib/news

#update de uitgaande batch (C News):
/usr/lib/newsbin/input/newsrun < /dev/null

# exchange news:
/usr/lib/newsbin/newsx acme news.acme.xz

# en leeg de inkomende batch:
/usr/lib/newsbin/input/newsrun < /dev/null
Een script om de diverse stukjes en beetjes te verbinden blijft, en kan in /root/news+mail worden geplaatst:
#!/bin/sh
#
# wissel nieuws en email uit
# moet als root worden gedraaid
#
if ! /usr/lib/ppp/ppp-on; then
    exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15

#exchange news+mail:
/root/mail &
su news -c ~news/news
wait

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

#update de inkomende batch (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

exit 0

Het is heel eenvoudig op het bovenstaande een uitbreiding te maken, zodanig dat er alleen een verbinding tot stand wordt gebracht als er uitgaande email en news aanwezig is. Laten we het /root/news+mail.cond noemen, en in gedachten houden dat de naam van de uitgaande news-spool als volgt moet worden bijgewerkt:

#!/bin/sh
#
# wissel nieuws en email uit alleen als er uitgaande news of mail-berichten zijn
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
    ! ( mailq | grep -q "Mail queue is empty"); then
     /root/news+mail
fi

Het enige wat er nu overblijft is aan te geven wanneer dit allemaal gaat gebeuren. Dit wordt gedaan door als root gebruik te maken van het commando crontab -e . Laten we ervan uitgaan dat we altijd om 07:00 in de ochtend news en mail uit willen wisselen, en dat er daarna ieder 4e uur uitgaande email en news zal zijn:

00 7            * * *   /root/news+mail
00 11,15,19,23  * * *   /root/news+mail.cond

Verzeker je ervan dat iedere component goed is getest voor je ze aan elkaar koppelt. Je kunt later verscheidene andere taken toevoegen, zoals een aanpassing van de tijd of de dag (met gebruik van ntpdate), en automatische update (mirroring) van lokaal beheerde WWW en FTP bestanden aan de ISP (met behulp van make en ftp).

ALT: Afhankelijk van iemands voorkeuren, is het ook mogelijk om het proces om te keren. Iedere keer dat er een PPP-link wordt geïnitieerd, zal het script /etc/ppp/ip-up worden gestart. Hier kan men, datgene wat er voor nodig is om email of news uit te wisselen, toevoegen. Zie man pppd voor verdere details.

ALT: Het is ook mogelijk om PPP automatisch op te starten als er netwerkverkeer wordt gedetecteerd. Dit is op veel manieren de elegantere oplossing, maar het is nogal afhankelijk van een goede configuratie om te voorkomen dat er frequente (en kostbare) verbindingen tot stand worden gebracht. Meer informatie is te vinden bij:

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

Het diald utility is beschikbaar vanaf:

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

Op dezelfde lokatie vindt men ook nog andere variaties op het thema PPP verbindingen.


Verder Terug Inhoud