Następna strona Poprzednia strona Spis treści

6. Jak zautomatyzować procedurę łączenia się z dostawcą?

Pod Linuxem automatyczna obsługa wysyłania i przyjmowania poczty i nowinek jest całkiem prosta.

Po pierwsze należy utworzyć plik /usr/lib/ppp/ppp-on odpowiedzialny za zainicjowanie połączenia z prowajderem. Czesto będzie zawierał tylko tyle:

/usr/sbin/pppd
Kolejne niezbędne informacje należy umieścić w pliku /etc/ppp/options:
connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400

Zakończenie połączenia zapewni dostarczona wersja /usr/lib/ppp/ppp-off.

Aby przetestować funkcjonalność tego rozwiązania należy stworzyć skrypty odpowiedzialne za wykonanie kilku zadań. Skrypt do porania poczty został opisany wcześniej, zakładamy, ze znajduje się w katalogu /home/dirk/pop.

Skrypt do wymiany poczty może być utworzony np. w /root/mail:

#! /bin/sh
#
# wymień pocztę z dostawcą
# 10 minutes timeout:
TIMEOUT=600
DT=10

# kopnij sendmaila (opróżnia kolejkę listów do wysłania)
sendmail -q &

# pobież pocztę:
su dirk -c /home/dirk/pop

# poczekaj aż sendmail zakończy pracę:
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

Skrypt do wymiany nowinek może być umieszczony np. w /usr/lib/news/news:

#!/bin/sh
#
# wymień nowinki z prowajderem
# musi byc uruchomiony jako news
cd /usr/lib/news

#uaktualnij kolejkę wychodzącą (C News):
/usr/lib/newsbin/input/newsrun < /dev/null

#wymień nowinki:
/usr/lib/newsbin/newsx acme news.acme.net

#opróżnij kolejkę przychodzących nowinek:
/usr/lib/newsbin/input/newsrun < /dev/null
Skrypt łączący te wszytkie kawałki możne umieścić np. w: /root/news+mail:
#!/bin/sh
#
# wymień poczte i nowinki z dostawcą
# musi być wykonywany jako root
#
if ! /usr/lib/ppp/ppp-on; then
    exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15

#wymien nowinki i pocztę :
/root/mail &
su news -c ~news/news
wait

#rozłącz się
/usr/lib/ppp/ppp-off

#uaktualnij kolejkę nowinek przychodzących (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

exit 0

Łatwo jest tak zmodyfikować przedstawione skrypty, że połączenie będzie nawiązywane jedynie wtedy, gdy jakiś list lub artykuł oczekiwał bedziena wysłanie. Nazwijmy go /root/news+mail.cond, pamiętając jednak, że trzeba go dostosować do własnej konfiguracji (nazewnicwa) bufora nowinek:

#!/bin/sh
#
# wymień poczte i nowinki jeśli cokolwiek czeka na wysłanie
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
    ! ( mailq | grep -q "Mail queue is empty"); then
     /root/news+mail
fi

Pozostaje jescze określić kiedy ten skrypt będzie wykonywany. Skorzystamy z polecenia crontab -e jako użytkownik root (pamiętamy, ze ten skrypt musi byc wykonywany jako root). Załózmy, że zawsze chcemy wymieniać pocztę i nowinki po raz pierwszy o 7 rano i potem co 4 godziny o jest coś do wysłania:

00 7      * * *     /root/news+mail
00 11,15,19,23 * * *     /root/news+mail.cond
Zanim połączysz wszystkie części razem, upewni się, że każda z nich działa prawidlowo. Później do tych skryptów można dołączać kolejne, wykonujące takie zadania, jak synchronizacja zegara (za pomocą ntpdate) czy automatyczne uaktualnianie stron WWW u prowajdera (za pomocą FTP),poprawianych na lokalnym komputerze.

ALT: W zależności od upodobań możliwe jest również odwrócenie całego procesu. Za każdym razem, kiedy zostaje zainicjowane PPP uruchamiany jest skrypt /etc/ppp/ip-up. Można do niego dodać uruchamianie innych skryptów obsługujących wymianę poczty i nowinek. Więcej inforamcji o PPP w podręczniku, patrz man pppd .

ALT: Możliwa jest również taka konfigracja, w której PPP jest uruchamiane automatycznie, w momencie wykrycia próby korzystania z sieci. W wielu przypadkach jest to bardziej eleganckie rozwiązanie, lecz zła konifuracja może spowodować częste (kosztowne) połączenia modemowe. Więcej informacji na ten temat można znaleźć pod adresem:

http://www.cs.toronto.edu/~schenk/diald.html

Program narzędziowy diald jest dostępny:

ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/diald-0.13.tar.gz

Pod powyższym adresem można znleźć inne informacje o połączeniach PPP.


Następna strona Poprzednia strona Spis treści