## 6. Как автоматизировать процедуру соединения?

Автоматизированная обработка новостей и почты в Linux делается легко.

Во-первых, надо создать /usr/lib/ppp/ppp-on, который устанавливает соединение с ISP. Часто этот файл содержит только:

> `

>     /usr/sbin/pppd

> `

В /etc/ppp/options указываются такие спецификации:

> `

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

> `

Для завершения соединения, используйте соответственнно файл /usr/lib/ppp/ppp-off.

Проверив функциональные возможности этих двух скриптов, теперь нужно написать скрипты, которые выполняют другие задачи. Скрипт для забора email был описан выше, и мы поместим его в /home/dirk/pop.

Скрипт обмена почтой может быть потом выполнен как /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

>     # wait for sendmail to terminate:
>     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

> `

Скрипт обмена новостями может быть записан как /usr/lib/news/news:

> `

>     #!/bin/sh
>     #
>     # exchange news
>     # must be run as news:
>     cd /usr/lib/news

>     #update the outgoing batch (C News):
>     /usr/lib/newsbin/input/newsrun < /dev/null

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

>     #and flush the incoming batch:
>     /usr/lib/newsbin/input/newsrun < /dev/null

> `

Скрипт, соединяет различные составляющие и куски, и может быть размещен как /root/news+mail:

> `

>     #!/bin/sh
>     #
>     # exchange news and email
>     # must be run as root
>     #
>     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 the incoming batch (C News):
>     su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

>     exit 0

> `

Легко добавить расширение к вышеприведенному скрипту для установления соединения, если имеется почта и новости для отправки. Давайте назовем его /root/news+mail.cond, и имейте в виду, что имя спула исходящих новостей должно быть исправлено на значение в вашей системе:

> `

>     #!/bin/sh
>     #
>     # exchange news and email, only if outgoing news or mail
>     # (C News spool)
>     if [ -s /var/spool/news/out.going/acme/togo ] ||
>         ! ( mailq | grep -q "Mail queue is empty"); then
>          /root/news+mail
>     fi

> `

Осталось только задать время, когда все это запускать. Это делается использованием команды crontab -e от имени root. Давайте назначим обмен почтой и новостями на 07:00 утра и затем каждые четыре часа отправку почты и новостей:

> `

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

> `

Удостоверьтесть, что каждый компонент тщательно проверен, прежде чем начнете использовать их вместе. Позже можно добавить несколько других задач, таких как установка времени дня (используя ntpdate) и автоматическое обновление (зеркалирование) локально разрабатываемых файлов WWW и FTP на ISP (используя make и ftp).

ALT:В зависимости от предпочтений, также возможно поключить какой-либо процесс. При каждом поднятии PPP, запускается скрипт /etc/ppp/ip-up. Здесь можно добавить команды для запуска процедуры обмена почтой и новостями. См. man pppd для подробностей.

ALT: Также возможно автоматически поднимать PPP при обнаружении трафика. Есть много элегантных решений, но они сильно зависят от правильной настройки, которая должна помочь избежать частых (и дорогостоящих) установлений соединений. Больше информации можно почерпнуть на:

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

Утилита diald доступна на:

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

В других местах можно обнаружить и другие варианты создания PPP-сессий.