Solaris のシステム管理 (資源管理とネットワークサービス)

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'

ダイアル時にモデムが '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 スクリプトテンプレート

Solaris PPP 4.0 には、ユーザーが自分のサイトで使用するために変更できる /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

ダイアル時にモデムが '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 スクリプトは、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 (ログイン完了。ピアシステム上で PPP を開始中)」という通知メッセージを表示してユーザーに状態を通知する

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 スクリプト

次は、ダイアルアウトマシンから ZyXEL omni.net ISDN TA を使って呼び出すための chat スクリプトです。


        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=1

S0=0S2=255

この行内の文字は、以下を意味する

  • &F – 出荷時のデフォルトを使用する

  • B40 – 非同期 PPP 会話を行う

  • S83.7=1 – スピーチベアラのデータを使用する

  • &K44 – CCP 圧縮を有効にする

  • &J3 – MP を有効にする

  • X7 – DCE 側のレートを報告する

  • S61.3=1 – パケット断片化を使用する

  • S0=0 – 自動応答なし

  • S2=255 – TIES エスケープを無効にする

OK ATDI18882638234

ISDN 呼び出しを行う。マルチリンクでは、2 番目の呼び出しは、同じ電話番号に対して行われる。これは、通常、ほとんどの ISP の条件である。リモートピアが 2 番目の電話番号に異なる番号を要求す る場合は、「+ nnnn」を付け加え る。nnnn は 2 番目の電話番号を表す

CONNECT \c

反対側のピアのモデムからの CONNECT メッセージを待つ

\r \d\c

CONNECT メッセージの最後まで待つ

SAY "Connected; running PPP\n"

ダイアルアウトマシンの画面上にこのメッセージを表示する 

chat スクリプトのオプションの説明およびその他の詳細な情報については、chat(1M) のマニュアルページを参照してください。送信予期文字列の説明については、UUCP Chat-Script フィールドを参照してください。

その他の chat スクリプト例の参照先

数多くの Web サイトで、chat スクリプトのサンプルとスクリプト作成のヒントが提供されています。

オーストラリア国立大学の Web サイトから利用できる PPP FAQ (Frequently Asked Questions) のページ (URL) も参考になります。