このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

PPP

発言者:Ichida
( Date Thursday, July 04, 1996 17:41:56 )


おかげさまで最近やっとサーバーが立ち上がりました。

予算の関係でアナログの28.8kでモデムを通じてプロバイダ
にTCPのアドレスをもらい接続しているのですが回線の状態が悪いと
PPPが切れてしまいます。

PPPが切れたとき,サーバーのソフトを終了し再度PPPを繋ぎ直し
再びソフトを起動する方法はありませんでしょうか?

何卒,御教授下さいますように。

田中求之 さんからのコメント
( Thursday, July 04, 1996 19:50:25 )

AppleScript の osax で、PPP の接続状態をチェックできるものがあります。
(PPP の接続/切断もコントロールできる)。

Info-mac の /pub/info-mac/dev/osa/mac-ppp-control-14-osax.hqx
です。

これを使って、定期的に PPP の回線の具合をチェックし、もし切断していたら、
サーバーをリスタートして PPP の接続命令を送る、というスクリプトを書けば
なんとかなると思います。

Ichida さんからのコメント
( Friday, July 05, 1996 00:31:15 )

ありがとうございます。早速試してみます。

ところで,話題は変わりますが以前から探していた音声を使わない
即時性のあるチャットを見つけましたのでご報告します。
日本語のパッチもすぐ入手できます。

このソフトってどんな仕組みになっているんでしょう?

→  SE-KO'S Homepage

田中求之 さんからのコメント
( Friday, July 05, 1996 02:26:17 )

>このソフトってどんな仕組みになっているんでしょう?

画像や音声はローカルで持っておいて、参加者と喋った内容をデータとしてリアルタイム
で転送する(Server Push を使うのかな?)という仕組みでしょう、たぶん。

サーバーから Netscape 経由でチャットソフトにデータを送るようになっているんだと
思います。実際に試したわけではないですが。

Compuserve Navigator (ついに開発が止まるみたいですねぇ)の Face File を
思い出してしまいました。

Ichida さんからのコメント
( Saturday, July 06, 1996 03:03:38 )

うーん,困りました。
回線が落ちているのにConfigPPPが
正常に繋がっている認識をしているみたいです。
(Close)になっていない。

そのような理由でMacPPP Controlでも
再び回線をOpenにできません。
(AppleScriptは未だ書いたこともないので手動で実験してみました。)

ほとほと困ってしまって...解決方法を何卒御教え下さいます様に。

田中求之 さんからのコメント
( Saturday, July 06, 1996 22:08:59 )

>回線が落ちているのにConfigPPPが
>正常に繋がっている認識をしているみたいです。

モデムの接続が切れただけでは PPP は Close されませんが、PPP の Check line
オプション( FreePPP 2.5 の場合)のような、回線チェックのオプションを有効に
することで、回線が切れたときに PPP を Close するようになるはずです。

Ichida さんからのコメント
( Tuesday, July 09, 1996 13:29:09 )

何度もすみません。
FreePPPのCheck Lineを設定してみましたが、
やはり正常に繋がっている認識をしているみたいです。

PM6100/66とGlobalVillagePlatinumを使っているんですが
何が問題でしょうか?

そこで無いアタマを使って考えたのですが自分のサーバーに
Eudoraのようなプロバイダ側に何分かの間隔でアクセスするソフト
を入れて,もしアクセスできなかった場合だけPPPを切断+接続する
ということができれば良いなと思いつきました。

アップルスクリプトでこんな芸当はできるものなんでしょうか?
スクリプトを書いたことが全くないのでトンチンカンかも知れませんが
よろしくお願いいたします。



田中求之 さんからのコメント
( Tuesday, July 09, 1996 14:48:12 )

>Eudoraのようなプロバイダ側に何分かの間隔でアクセスするソフト
>を入れて,もしアクセスできなかった場合だけPPPを切断+接続する
>ということができれば良いなと思いつきました。

Check Line は利きませんでしたか…

定期的にスクリプトで回線のチェックを行うということであればいくつかの
方法が考えられます。

自分のサーバーに定期的にアクセスして、もしアクセスに失敗したときには
エラーメッセージを送ったり、アップルスクリプトを実行したりするツール
があります。Maxum の PageSentry です。こういうツールを使うという
方法もあります。

定期的にプロバイダのメールサーバーにチェックにいくようなスクリプトを
書くことはできますが、TCP/IP scripting Addition という製品を
買って AppleScript でネットワークのスクリプトが書けるようにしない
といけませんし、また、スクリプト自体も簡単とは言えません。
(私のサーバーの Web Scripting Lab にサンプルスクリプトは登録
してあります。これは Web サーバーにアクセスにいくものですが、少し
書き換えれば、他のサーバーにも使えます)


Allegiant から出ている Marionet というツールを購入すれば、
上記のすべての処理をスクリプトでやってしまう方法よりは楽に
コントロールできます。




→  Page Sentry (Maxum)

Ichida さんからのコメント
( Thursday, August 22, 1996 15:52:45 )

PageSentryは自分がWWWサーバーにしているコンピューターそれ自身の中では
使えないようなので一カ月程、『がんばろう!』とスクリプトを学び始めましたが
スッゴーク難しいものですね。(T T)

田中様の作られた『URL-Chaecker』に何とか下記のスクリプトが入らないものか
試みましたが何度も失敗ばかりしています。
そこでお願いですが、このスクリプトがどこに入れられるのか、また、
URLリストや保存場所を聞かれずに済ますにはどうしたらよいか
御教授頂けましたら幸いです。どうかお願いいたします。
on idle
  if myReport is not in "OK" then
    closePPP
  end if
  repeat until PPPopened
    if not (PPPopened) then
      openPPP
    end if
  end repeat
  return 600
end idle



田中求之 さんからのコメント
( Thursday, August 22, 1996 16:49:29 )

>そこでお願いですが、このスクリプトがどこに入れられるのか、また、
>URLリストや保存場所を聞かれずに済ますにはどうしたらよいか
>御教授頂けましたら幸いです。どうかお願いいたします。

上記のスクリプトは、PPP でコネクションを保つためのものですが、回線がサーバー側
(プロバイダ側)で切られてしまった場合に、切断が判定できないという問題があります。
その点はよろしいのですね?

で、本題ですが、どのようなことをなさりたいのでしょう? PPP 経由で URL-Checker
を動かすということですか? 「何がしたいのか」がはっきりしていると、アドバイスも
できるのですが...

Ichida さんからのコメント
( Thursday, August 22, 1996 17:15:11 )

>で、本題ですが、どのようなことをなさりたいのでしょう? PPP 経由で URL-Checker
>を動かすということですか? 「何がしたいのか」がはっきりしていると、アドバイスも
>できるのですが...

済みません。m__m
数分毎で或るURL(プロバイダーのWWWページにしておきたい)との回線(PPP接続)をチェックし、
その接続にエラーがでたときにだけPPPを一度切断し再度接続を試みる(PPPで常時
コネクションを保つ)ということが自動的に処理されるようにしたいのです。



Ichida さんからのコメント
( Thursday, August 22, 1996 17:31:22 )

以前、ポストさせていただいた時の状況説明が抜けていました。
度々済みません。


予算の関係でアナログの28.8kでモデムを通じてプロバイダ
にTCPのアドレスをもらい接続しているのですが回線の状態が悪いと
PPPが切れてしまいます。
そこで、
数分毎で或るURL(プロバイダーのWWWページにしておきたい)との回線(PPP接続)をチェックし、
その接続にエラーがでたときにだけPPPを一度切断し再度接続を試みる(PPPで常時
コネクションを保つ)ということが自動的に処理されるようにしたいのです。


田中求之 さんからのコメント
( Thursday, August 22, 1996 21:50:03 )

>そこで、
>数分毎で或るURL(プロバイダーのWWWページにしておきたい)との回線(PPP接続)をチェックし、
>その接続にエラーがでたときにだけPPPを一度切断し再度接続を試みる(PPPで常時
>コネクションを保つ)ということが自動的に処理されるようにしたいのです。

なるほど、そういうことでしたか。

この場合は、idle ハンドラーを中心に URL-Checker のスクリプトを組み替える
必要があります。あとでサンプルを載せます。

Ichida さんからのコメント
( Friday, August 23, 1996 04:40:15 )

今まで回線(PPP接続)にエラーが有っても無くても定期的に切断し、
再接続をしていました。

>あとでサンプルを載せます。

非常に助かります。ありがとうございます。(^ ^)/

田中求之 さんからのコメント
( Friday, August 23, 1996 23:30:26 )

とりあえずサンプルを載せますが、私の自宅でためしたところ、非常に不安定でした。
また、TCP/IP osax は、サーバーにアクセスにいくとき、CPU タイムをかなり
消費するため、他のプロセス(アプリケーション)がハングアップしたようになります。
この点は気を付けてください。

というわけで、以下のスクリプトに関しては、まったく責任を持ちませんので、その
つもりで、あくまでもサンプルとして見てください。

====

property myHost : "your.host" --- サーバーのホスト名
property myPort : 80 --- ポート
property myPath : "/" --- チェックするページ

on idle
  
  if not (PPPopened) then
    openPPP
    
  end if
  
  repeat until PPPopened
  end repeat
  
  set myT to (current date) + 2
  repeat until (current date) > myT
  end repeat
  
  ---
  set thePage to {}
  tcp start --- 2.0's command of OT
  try
    set commandStream to (tcp connect to host myHost port myPort maximum seconds 30)
    try
      tcp write stream commandStream data {"HEAD", " ", myPath, " HTTP/1.0", return, "User-Agent: AppleScript", return, "Accept: */*", return, return} using ISO88591
      
      repeat while connection status of (tcp status stream commandStream) = Connected
        set end of thePage to (tcp read stream commandStream)
      end repeat
    on error
      tcp close stream commandStream
      set thePage to {}
    end try
  on error
    set thePage to {}
  end try
  
  tcp finish --- 2.0's command of OT
  
  ---
  
  if thePage = {} then
    
    closePPP with hard close
    
    repeat until (not (PPPopened))
    end repeat
    
    set myT to (current date) + 2
    repeat until (current date) > myT
    end repeat
    
    openPPP
    
    repeat until PPPopened
    end repeat
    
  end if
  
  return 300 --- 5分毎
  
end idle

====

** これを StayOpen のアプレットにして実行します。

Ichida さんからのコメント
( Saturday, August 24, 1996 06:34:30 )

おかげさまでこのアプレットで常時回線を保てます。

貴重な時間を割いていただき、ありがとうございました。感謝!!!