CHAT スクリプトは、接続フェーズ時にクライアントとサーバー間で発生するダイアログ (対話) を定義します。単純な非対話型 CHAT スクリプトでは、 以下のように send キーワードと expect キーワードによって交換する文字列を定義します。
# # Chat script for ppp login # # # Set the line regarding the remote site configuration # Due to UUCP limitations some systems only accept cs7 # # setline cs7 parodd send RETURN expect "ogin:" 10 onerror send BREAK repeat 3 send "ppp1" expect "word: " 40 # # Set the ppp password of the remote host here # send "okppp1" |
呼を発信すると、クライアントはリモートサーバーからの応答を受信した後、ログインシーケンスを開始します。クライアントが応答を待機する時間と呼を発信する試行回数は、以下のエントリによって定義します。
expect "ogin:" 10 onerror send BREAK repeat 3 |
要求される応答は、ogin です。最初の数字 10 は待機時間を示し、2 番目の数字 3 は呼の開始試行数を示します。これらのパラメータは、いずれも変更可能です。
たとえば、発信を 5 秒ごとに 10 回再試行するには、エントリを以下のように変更します。
expect "ogin:" 5 onerror send BREAK repeat 10 |
対話型 CHAT スクリプトでは、echo キーワードと read キーワードによって、ユーザー入力を促すためのプロンプトを表示します。ユーザーが入力した内容は、接頭辞 $ によって識別される変数として格納されます。以下の例は、前述の非対話型のスクリプトを対話型にしたものです。
send RETURN expect "ogin:" 10 onerror send BREAK repeat 3 echo "Enter your PPP login id: " read $login send "$login" expect "word: " 40 echo "Enter your PPP password: " read $password send "$password" |
次の例は、ユーザーと動的チャレンジ応答認証システムとの対話を管理する、より複雑な CHAT スクリプトです。
send RETURN expect "ID:" 10 onerror send BREAK repeat 3 echo "Enter your user ID number: " read $id send "$id" expect "Challenge: ${challenge,6}" 10 echo "Enter the response for Challenge ${challenge}: " read $response send "$response" expect "${host}:" 20 echo "Connected to ${host}¥n" send "ppp" |
このスクリプトは、ユーザー ID を読み取ってサーバーに送信します。文字列 Challenge: で始まるサーバーからの応答を 10 秒間待機し、チャレンジ値である次の 6 文字を読み取ります。
次に、スクリプトはチャレンジ値を表示し、ユーザーによる応答を待機し、この応答をサーバーに送信します。応答が受信されると、接続が確立されます。
文字列の中の変数は、{} 括弧を使用することによって他の文字と区別します。