次のページ 前のページ 目次へ

6. 接続手続きを自動化する方法

ニュースや電子メールの取り扱いを自動化するのも、Linux でなら簡単です。

最初のそしてもっとも大切な手続きは、プロバイダとの接続を確立するための書式で ある/usr/lib/ppp/ppp-on を作成することです。この書式には、次の一文しか記入さ れていないこともしばしばです。


       /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
       #
       # 電子メイルの送受
       # 10 分間で時間切れ
       TIMEOUT=600
       DT=10

       # 電子メールを送信:
       sendmail -q &

       # 電子メールを受信:
       su dirk -c /home/dirk/pop

       # sendmail が終了するのを待つ:
       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

       #送付用バッチを更新 (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
  #
  # 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 という命令をルートとして実行します。以下の例は、ニュースと電子メイルの 授受を毎日朝七時に、その後四時間ごとに送信のみを行う場合の指定です。


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

上述の各部品を組み合わせる前に、それぞれをしっかりと検査しておくべきです。別 のタスクを付け加える必要が生じるかもしれません。(時刻を一致させる ntpdate、手元で管理している WWW 、 FTP を使ってプロバイダ側のそれを 自動的に更新する makeftp など)

代替案:効率によっては、プロセスを川下向きに変更することも可能です。PPP リン クを確立する度に、/etc/ppp/ip-up を起動すればいいのです。電子メイル やニュースの授受を開始するには何らかの magic を付け加える必要があることもあ るでしょう。

代替案:ネットワークトラフィックが成立している間ならいつでも 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 接続に関する他の情報も集められています。


次のページ 前のページ 目次へ