Next Previous Contents

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

交換 news 的命令手稿放在 /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, 記得向外的 news-spool 也必須更新以相配合:

#!/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

現在只剩指定何時這些事要發生而已。這可以 root 的身份,使用 crontab -e 命令來達成。假設我們希望每天早上 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 連接的其他不同項目。


Next Previous Contents