chat スクリプトの例
このセクションでは、独自の chat スクリプトを作成する際の参考になる chat スクリプトの例を紹介します。モデムメーカーのガイドや ISP およびほかのターゲットホストからの情報には、モデムおよびターゲットピアの chat の要件が含まれています。また、数多くの PPP Web サイトで chat スクリプトのサンプルが提供されています。
基本のモデム chat スクリプト
次は、独自の chat スクリプトを作成するためのテンプレートとして使用できる基本の chat スクリプトです。
ABORT BUSY
ABORT 'NO CARRIER'
REPORT CONNECT
TIMEOUT 10
"" AT&F1M0&M5S2=255
SAY "Calling myserver\n"
TIMEOUT 60
OK "ATDT1-123-555-1212"
ogin: pppuser
ssword: \q\U
% pppd
次の表では、chat スクリプトの内容を説明します。
| |
ABORT BUSY
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
ABORT 'NO CARRIER'
| ダイアル時にモデムが ABORT 'NO CARRIER' を報告した場合、伝送を中止します。このメッセージは、通常、ダイアルまたはモデムのネゴシエーションが失敗したときに発生します。
|
REPORT CONNECT
| CONNECT 文字列をモデムから収集し、その文字列を出力します。
|
TIMEOUT 10
| 初期タイムアウトを 10 秒に設定します。モデムの応答は即時であるべきです。
|
"" AT&F1M0&M5S2=255
| M0 – 接続中、スピーカーをオフに設定します。 &M5 – モデムにエラー制御を要求させます。 S2=255 – TIES “+++” ブレークシーケンスを無効にします。
|
SAY "Calling myserver\n"
| ローカルマシン上に「Calling myserver (myserver を呼び出し中)」のメッセージを表示します。
|
TIMEOUT 60
| タイムアウトを 60 秒にリセットし、接続ネゴシエーションにより多くの時間を割り当てます。
|
OK "ATDT1-123-555-1212"
| 電話番号 1-123-555-1212 を使ってリモートピアに発信します。
|
ogin: pppuser
| UNIX 方式のログインを使ってピアにログインします。ユーザー名 pppuser を指定します。
|
ssword: \q\U
| \q – –v オプションを使ってデバッグする場合、記録しません。 \U – –U のあとに続く文字列の内容をこの位置に挿入します。文字列はコマンド行に指定されるもので、通常はパスワードが含まれます。
|
% pppd
| % シェルプロンプトを待ち、pppd コマンドを実行します。
|
|
/etc/ppp/myisp-chat.tmpl chat スクリプトテンプレート
このリリースには、ユーザーが自分のサイトで使用するために変更できる /etc/ppp/myisp-chat.tmpl という chat スクリプトテンプレートが用意されています。/etc/ppp/myisp-chat.tmpl は、基本のモデム chat スクリプトと似ていますが、ログインシーケンスが含まれていません。
ABORT BUSY
ABORT 'NO CARRIER'
REPORT CONNECT
TIMEOUT 10
"" "AT&F1"
OK "AT&C1&D2"
SAY "Calling myisp\n"
TIMEOUT 60
OK "ATDT1-123-555-1212"
CONNECT \c
| |
ABORT BUSY
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
ABORT 'NO CARRIER
| ダイアル時にモデムが ABORT 'NO CARRIER' を報告した場合、伝送を中止します。このメッセージは、通常、ダイアルまたはモデムのネゴシエーションが失敗したときに発生します。
|
REPORT CONNECT
| CONNECT 文字列をモデムから収集し、その文字列を出力します。
|
TIMEOUT 10
| 初期タイムアウトを 10 秒に設定します。モデムの応答は即時であるべきです。
|
"" "AT&F1"
| モデムを出荷時のデフォルトにリセットします。
|
OK "AT&C1&D2"
| モデムをリセットします。その結果、&C1 では、モデムからの DCD がキャリアを追跡します。リモート側がなんらかの理由で電話を切った場合、DCD はドロップします。 &D2 では、DTR の High-Low 遷移により、モデムが「オンフック」状態になるか、またはハングアップします。
|
SAY "Calling myisp\n"
| ローカルマシン上に「Calling myisp (myisp を呼び出し中)」のメッセージを表示します。
|
TIMEOUT 60
| タイムアウトを 60 秒にリセットし、接続ネゴシエーションにより多くの時間を割り当てます。
|
OK "ATDT1-123-555-1212"
| 電話番号 1-123-555-1212 を使ってリモートピアに発信します。
|
CONNECT \c
| 反対側のピアのモデムからの CONNECT メッセージを待ちます。
|
|
ISP を呼び出すためのモデムの chat スクリプト
ダイアルアウトマシンから U.S. Robotics Courier モデムを使用して ISP を呼び出すには、テンプレートとして次の chat スクリプトを使用します。
ABORT BUSY
ABORT 'NO CARRIER'
REPORT CONNECT
TIMEOUT 10
"" AT&F1M0&M5S2=255
SAY "Calling myisp\n"
TIMEOUT 60
OK "ATDT1-123-555-1212"
CONNECT \c
\r \d\c
SAY "Connected; running PPP\n"
次の表では、chat スクリプトの内容を説明します。
| |
ABORT BUSY
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
ABORT 'NO CARRIER'
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
REPORT CONNECT
| CONNECT 文字列をモデムから収集し、その文字列を出力します。
|
TIMEOUT 10
| 初期タイムアウトを 10 秒に設定します。モデムの応答は即時であるべきです。
|
"" AT&F1M0M0M0M0&M5S2=255
| M0 – 接続中、スピーカーをオフに設定します。 &M5 – モデムにエラー制御を要求させます。 S2=255 – TIES “+++” ブレークシーケンスを無効にします。
|
SAY "Calling myisp\n"
| ローカルマシン上に「Calling myisp (myisp を呼び出し中)」のメッセージを表示します。
|
TIMEOUT 60
| タイムアウトを 60 秒にリセットし、接続ネゴシエーションにより多くの時間を割り当てます。
|
OK "ATDT1-123-555-1212"
| 電話番号 1-123-555-1212 を使ってリモートピアに発信します。
|
CONNECT \c
| 反対側のピアのモデムからの CONNECT メッセージを待ちます。
|
\r \d\c
| CONNECT メッセージの最後まで待ちます。
|
SAY “Connected; running PPP\n”
| ローカルマシン上に「Connected; running PPP (接続完了。PPP を実行中)」という通知メッセージを表示します。
|
|
UNIX 方式ログイン用に拡張された基本の chat スクリプト
次の chat スクリプトは、Oracle Solaris のリモートピアまたはほかの UNIX タイプのピアを呼び出すために基本のスクリプトを拡張したものです。この chat スクリプトは、ピアを呼び出すための命令群を作成する方法で使用されています。
SAY "Calling the peer\n"
TIMEOUT 10
ABORT BUSY
ABORT 'NO CARRIER'
ABORT ERROR
REPORT CONNECT
"" AT&F1&M5S2=255
TIMEOUT 60
OK ATDT1-123-555-1234
CONNECT \c
SAY "Connected; logging in.\n"
TIMEOUT 5
ogin:--ogin: pppuser
TIMEOUT 20
ABORT 'ogin incorrect'
ssword: \qmypassword
"% " \c
SAY "Logged in. Starting PPP on peer system.\n"
ABORT 'not found'
"" "exec pppd"
~ \c
次の表では、chat スクリプトのパラメータを説明します。
| |
TIMEOUT 10
| 初期タイムアウトを 10 秒に設定します。モデムの応答は即時であるべきです。
|
ABORT BUSY
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
ABORT 'NO CARRIER'
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
ABORT ERROR
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
REPORT CONNECT
| CONNECT 文字列をモデムから収集し、その文字列を出力します。
|
"" AT&F1&M5S2=255
| &M5 – モデムにエラー制御を要求させます。 S2=255 – TIES “+++” ブレークシーケンスを無効にします。
|
TIMEOUT 60
| タイムアウトを 60 秒にリセットし、接続ネゴシエーションにより多くの時間を割り当てます。
|
OK ATDT1-123-555-1234
| 電話番号 1-123-555-1212 を使ってリモートピアに発信します。
|
CONNECT \c
| 反対側のピアのモデムからの CONNECT メッセージを待ちます。
|
SAY "Connected; logging in.\n"
| 「Connected; logging in (接続完了。ログイン中)」という通知メッセージを表示して、ユーザーのステータスを知らせます。
|
TIMEOUT 5
| タイムアウトを変更し、ログインプロンプトを迅速に表示できるようにします。
|
ogin:--ogin: pppuser
| ログインプロンプトを待ちます。ログインプロンプトを受け取らなかった場合は、RETURN を送信して待機します。次にユーザー名 pppuser をピアに送信します。この後に続くシーケンスは、ほとんどの ISP から PAP ログインと呼ばれています。ただし、PAP 認証とはまったく無関係です。
|
TIMEOUT 20
| タイムアウトを 20 秒に変更し、パスワードの検証により多くの時間をかけられるようにします。
|
ssword: \qmysecrethere
| ピアからのパスワードプロンプトを待ちます。プロンプトを受け取ると、パスワード \qmysecrethere を送信します。\q は、パスワードがシステムログファイルに書き込まれるのを防ぎます。
|
"% " \c
| ピアからのシェルプロンプトを待ちます。chat スクリプトは C シェルを使用します。ユーザーが異なるシェルを使ってログインすることを希望する場合は、この値を変更します。
|
SAY "Logged in. Starting PPP on peer system.\n"
| 「Logged in. Starting PPP on peer system」という通知メッセージを表示して、ユーザーのステータスを知らせます。
|
ABORT 'not found'
| シェルがエラーに遭遇した場合、伝送を中止します。
|
"" "exec pppd"
| ピア上で pppd を起動します。
|
~ \c
| PPP がピア上で開始するのを待ちます。
|
|
ISP は、CONNECT \c の直後に PPP を開始することをしばしば「PAP ログイン」といいます。しかし、実際には、PAP ログインは PAP 認証とは無関係です。
ogin:--ogin: pppuser 句は、ダイアルインサーバーからのログインプロンプトに対してユーザー名 pppuser を送信するようにモデムに指示します。pppuser は、ダイアルインサーバー上のリモートユーザー user1 用に作成された専用の PPP ユーザーアカウント名です。ダイアルインサーバー上に PPP ユーザーアカウントを作成する方法については、ダイアルインサーバーのユーザーを構成する方法を参照してください。
外部 ISDN TA 用 chat スクリプト
次の chat スクリプトは、ダイアルアウトマシンから ZyXEL omni.net. ISDN TA を使って呼び出すためのものです。
SAY "Calling the peer\n"
TIMEOUT 10
ABORT BUSY
ABORT 'NO CARRIER'
ABORT ERROR
REPORT CONNECT
"" AT&FB40S83.7=1&K44&J3X7S61.3=1S0=0S2=255
OK ATDI18882638234
CONNECT \c
\r \d\c
SAY "Connected; running PPP\n"
次の表では、chat スクリプトのパラメータを説明します。
| |
SAY "Calling the peer"
| ダイアルアウトマシンの画面上にこのメッセージを表示します。
|
TIMEOUT 10
| 初期タイムアウトを 10 秒に設定します。
|
ABORT BUSY
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
ABORT 'NO CARRIER'
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
ABORT ERROR
| モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。
|
REPORT CONNECT
| CONNECT 文字列をモデムから収集し、その文字列を出力します。
|
"" AT&FB40S83.7=1&K44&J3X7S61.3=1S0=0S2=255
| この行内の文字は、次を意味します。
|
OK ATDI18882638234
| ISDN 呼び出しを行います。マルチリンクでは、2 番目の呼び出しは、同じ電話番号に対して行われます。これは、通常、ほとんどの ISP の条件です。リモートピアが 2 番目の電話番号に異なる番号を要求する場合は、「+nnnn」を付け加えます。nnnn は 2 番目の電話番号を表します。
|
CONNECT \c
| 反対側のピアのモデムからの CONNECT メッセージを待ちます。
|
\r \d\c
| CONNECT メッセージの最後まで待ちます。
|
SAY "Connected; running PPP\n"
| ダイアルアウトマシンの画面上にこのメッセージを表示します。
|
|
chat スクリプトのオプションの説明およびその他の詳細な情報については、chat(1M) のマニュアルページを参照してください。expect-send 文字列の説明については、/etc/uucp/Systems ファイルの Chat-Script フィールドを参照してください。
その他の chat スクリプト例の参照先
数多くの Web サイトで、chat スクリプトのサンプルとスクリプト作成のヒントが提供されています。たとえば、http://ppp.samba.org/ppp/index.html を参照してください。