Avanti Indietro Indice

6. Come faccio ad automatizzare la procedura di connessione?

La gestione automatica della posta e delle news è abbastanza facile sotto Linux.

Come primo e principale passo, si deve creare uno script /usr/lib/ppp/ppp-on per iniziare il collegamento con l'Internet Provider. Spesso, basta una riga con il seguente comando:

/usr/sbin/pppd

Altri particolari vengono definiti nel file /etc/ppp/options:

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

Per chiudere il collegamento, usate la versione predefinita di /usr/lib/ppp/ppp-off.

Dopo aver verificato il funzionamento di questi script, si devono scrivere altri script che eseguiranno le diverse operazioni. Lo script per prelevare la posta è già stato descritto precedentemente, ed assumeremo che si trova nel file /home/dirk/pop.

Uno script per lo scambio della posta può essere messo in /root/mail:

#! /bin/sh
#
# scambia posta elettronica
# 10 minuti di timeout:
TIMEOUT=600
DT=10

# lancia sendmail:
sendmail -q &

# preleva la posta:
su dirk -c /home/dirk/pop

# attendi la fine di sendmail:
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

Lo script per lo scambio delle news può essere messo nel file /usr/lib/news/news:

#!/bin/sh
#
# scambio delle news
# viene eseguita come utente news:
cd /usr/lib/news

#aggiorna il batch di uscita (C News):
/usr/lib/newsbin/input/newsrun < /dev/null

#scambia le news:
/usr/lib/newsbin/newsx acme news.acme.xz

#e svuota il batch in ingresso:
/usr/lib/newsbin/input/newsrun < /dev/null

Adesso manca soltanto uno script per mettere insieme i diversi pezzi, e che può essere messo nel file /root/news+mail:

#!/bin/sh
#
# scambio della posta e delle news
# viene eseguito come utente root
#
if ! /usr/lib/ppp/ppp-on; then
    exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15

#scambio della posta e news:
/root/mail &
su news -c ~news/news
wait

#chiude il collegamento
/usr/lib/ppp/ppp-off

#aggiorna il batch in ingresso (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

exit 0

È abbastanza semplice modificare lo script precedente per attivare la connessione solo quando c'è della posta o delle news da spedire. Supponiamo di chiamarlo /root/news+mail.cond, e teniamo presente che il nome dello spool delle news in uscita deve essere aggiornato di conseguenza:

#!/bin/sh
#
# scambio della posta e delle news, solo se ci sono messaggi in uscita
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
    ! ( mailq | grep -q "Mail queue is empty"); then
     /root/news+mail
fi

L'unica cosa che manca è specificare quando dovrebbe accadere tutto ciò. Questo viene fatto usando il comando crontab -e come root. Assumendo che intendiamo effettuare sempre lo scambio della posta e delle news alle 07:00 del mattino, e successivamente ogni 4 ore ma solo se ci sono messaggi da spedire

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

Verificate separatamente il corretto funzionamento di ogni componente prima di collegarli insieme. Successivamente potreste aggiungere molte altre operazioni, come per esempio sincronizzare la data e ora (usando ntpdate), l'aggiornamento automatico (mirroring) di file WWW e FTP gestiti localmente verso il vostro Internet Provider (usando make e ftp).

ALTERNATIVA: A seconda delle vostre preferenze, potete impostare le procedure al contrario. Ogni volta che la connessione PPP viene attivata, verrà eseguito anche lo script /etc/ppp/ip-up. E potete aggiungere in questo script qualunque incantesimo sia necessario per effettuare lo scambio della posta e delle news. Usate man pppd per ulteriori dettagli.

ALTERNATIVA: È anche possibile attivare automaticamente il collegamento PPP ogni volta che viene rilevato traffico di rete. Questa è in molti aspetti la soluzione più elegante, ma dipende molto di una buona configurazione onde evitare frequenti (e costosi) collegamenti. Altre informazioni possono essere trovate a http://www.dna.lth.se/~erics/diald.html.

L'utility diald è disponibile da ftp://sunsite.unc.edu/pub/Linux/system/network/serial/diald-0.16.tar.gz.

In questo sito potete anche trovare altre variazioni sul tema dei collegamenti PPP.


Avanti Indietro Indice

Hosting by: hurra.com
Generated: 2007-01-26 17:56:18