下一页 上一页 目录

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 版本。

在测试完这两个脚本的功能后,接下来必须编写执行各种任务的脚本。收集电子邮件的脚本之前已经描述过,这里我们假设它位于 /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 交换新闻和邮件,之后每 4 小时交换一次,前提是有待发送的电子邮件和新闻。

00 7            * * *   /root/news+mail
00 11,15,19,23  * * *   /root/news+mail.cond
在将所有组件连接在一起之前,请确保每个组件都经过充分测试。之后可以添加其他几个任务,例如调整时间(使用ntpdate),以及将本地维护的 WWW 和 FTP 文件自动更新(镜像)到 ISP(使用 make 和 ftp)。

备选方案: 根据个人偏好,也可以颠倒这个过程。每次 PPP 链接启动时,脚本/etc/ppp/ip-up 将会被启动。在这里可以添加启动电子邮件和新闻交换所需的任何“魔法”。有关更多详细信息,请参阅 man pppd

备选方案: 也可以在检测到网络流量时自动连接 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 连接主题的其他变体。


下一页 上一页 目录