<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>ISP-Hookup-HOWTO: Come faccio ad automatizzare la procedura di connessione?</TITLE> <LINK HREF="ISP-Hookup-HOWTO-7.html" REL=next> <LINK HREF="ISP-Hookup-HOWTO-5.html" REL=previous> <LINK HREF="ISP-Hookup-HOWTO.html#toc6" REL=contents> </HEAD> <BODY> <A HREF="ISP-Hookup-HOWTO-7.html">Avanti</A> <A HREF="ISP-Hookup-HOWTO-5.html">Indietro</A> <A HREF="ISP-Hookup-HOWTO.html#toc6">Indice</A> <HR> <H2><A NAME="s6">6. Come faccio ad automatizzare la procedura di connessione?</A></H2> <P>La gestione automatica della posta e delle news è abbastanza facile sotto Linux. <P>Come primo e principale passo, si deve creare uno script <!-- /usr/lib/ppp/ppp-on --> /usr/lib/ppp/ppp-on per iniziare il collegamento con l'Internet Provider. Spesso, basta una riga con il seguente comando: <P> <BLOCKQUOTE><CODE> <PRE> /usr/sbin/pppd </PRE> </CODE></BLOCKQUOTE> <P> <!-- pppd --> Altri particolari vengono definiti nel file <!-- /etc/ppp/options --> /etc/ppp/options: <P> <BLOCKQUOTE><CODE> <PRE> connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript" crtscts modem defaultroute asyncmap 00000000 user dirk /dev/modem 38400 </PRE> </CODE></BLOCKQUOTE> <P>Per chiudere il collegamento, usate la versione predefinita di <!-- /usr/lib/ppp/ppp-off --> /usr/lib/ppp/ppp-off. <P>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. <P>Uno script per lo scambio della posta può essere messo in /root/mail: <P> <BLOCKQUOTE><CODE> <PRE> #! /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 </PRE> </CODE></BLOCKQUOTE> <P>Lo script per lo scambio delle news può essere messo nel file /usr/lib/news/news: <P> <BLOCKQUOTE><CODE> <PRE> #!/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 </PRE> </CODE></BLOCKQUOTE> <P>Adesso manca soltanto uno script per mettere insieme i diversi pezzi, e che può essere messo nel file /root/news+mail: <P> <BLOCKQUOTE><CODE> <PRE> #!/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 </PRE> </CODE></BLOCKQUOTE> <P>È 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 --> /root/news+mail.cond, e teniamo presente che il nome dello spool delle news in uscita deve essere aggiornato di conseguenza: <P> <BLOCKQUOTE><CODE> <PRE> #!/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 </PRE> </CODE></BLOCKQUOTE> <P>L'unica cosa che manca è specificare quando dovrebbe accadere tutto ciò. Questo viene fatto usando il comando <CODE>crontab -e</CODE> <!-- crontab --> come <CODE>root</CODE>. 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 <P> <BLOCKQUOTE><CODE> <PRE> 00 7 * * * /root/news+mail 00 11,15,19,23 * * * /root/news+mail.cond </PRE> </CODE></BLOCKQUOTE> <P>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 --> ntpdate), l'aggiornamento automatico (mirroring) di file WWW e FTP gestiti localmente verso il vostro Internet Provider (usando make e ftp). <P><B>ALTERNATIVA:</B> 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 --> /etc/ppp/ip-up. E potete aggiungere in questo script qualunque incantesimo sia necessario per effettuare lo scambio della posta e delle news. Usate <CODE>man pppd</CODE> per ulteriori dettagli. <P><B>ALTERNATIVA:</B> È 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 <A HREF="http://www.dna.lth.se/~erics/diald.html">http://www.dna.lth.se/~erics/diald.html</A>. <P>L'utility <CODE>diald</CODE> è disponibile da <A HREF="ftp://sunsite.unc.edu/pub/Linux/system/network/serial/diald-0.16.tar.gz">ftp://sunsite.unc.edu/pub/Linux/system/network/serial/diald-0.16.tar.gz</A>. <P>In questo sito potete anche trovare altre variazioni sul tema dei collegamenti PPP. <P> <HR> <A HREF="ISP-Hookup-HOWTO-7.html">Avanti</A> <A HREF="ISP-Hookup-HOWTO-5.html">Indietro</A> <A HREF="ISP-Hookup-HOWTO.html#toc6">Indice</A> </BODY> </HTML>