Автоматизированная обработка новостей и почты в 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 # # обмен новостями # должен быть запущен от пользователя news: cd /usr/lib/news
#обновить исходящие пакеты (C News): /usr/lib/newsbin/input/newsrun < /dev/null
#обмен новостями: /usr/lib/newsbin/newsx acme news.acme.net
#и обработать пришедшие пакеты: /usr/lib/newsbin/input/newsrun < /dev/null
Скрипт, соединяет различные составляющие и куски, и может быть размещен как /root/news+mail:
#!/bin/sh # # обмен новостями и почтой # должен запускаться от root # if ! /usr/lib/ppp/ppp-on; then exit 1 fi trap "/usr/lib/ppp/ppp-off" 1 2 3 15
#обмен почтой и новостями /root/mail & su news -c ~news/news wait
#отсодиниться.. /usr/lib/ppp/ppp-off
#обновить исходящие пакеты (C News):: su news -c /usr/lib/newsbin/input/newsrun < /dev/null &
exit 0
Легко добавить расширение к вышеприведенному скрипту для установления соединения, если имеется почта и новости для отправки. Давайте назовем его /root/news+mail.cond, и имейте в виду, что имя спула исходящих новостей должно быть исправлено на значение в вашей системе: