TCP/IP とデータ通信

Chat-Script フィールド

このフィールド (Login フィールドとも呼ばれます) には、チャットスクリプトと呼ばれる文字列が入ります。チャットスクリプトには、ローカルマシンとリモートマシンが対話の最初の時点で互いに受け渡ししなければならない文字が含まれています。チャットスクリプトの形式は次のとおりです。

expect send [expect send] ....

expect は、対話を開始するために、ローカルホストがリモートホストから送られてくることを想定している文字列です。send は、ローカルホストが、リモートホストからの expect 文字列を受信した後で送信する文字列です。チャットスクリプトには、複数の expect-send シーケンスを含めることもできます。

基本的なチャットスクリプトには次の情報が含まれます。

expect フィールドは、次の形式のサブフィールドを持つことができます。

expect[-send-expect]...

-send は、その前の expect が正常に読み取れなかった場合に送られるものであり、send の後の -expect は、その次に送られてくると想定されている文字列です。

たとえば、login--login という文字列を指定した場合、ローカルホストの UUCP は login が送られてくることを想定します。そして、リモートマシンから login を受信すると、UUCP は次のフィールドに進みます。login を受信しなかった場合は、キャリッジリターンを送信し、再度 login が送られてくるのを待ちます。ローカルコンピュータが、初期状態でどのような文字も想定していない場合は、expect フィールドで文字列 "" (NULL 文字列) を指定します。send 文字列が ¥c で終わっている場合を除き、send フィールドの送信の後には必ずキャリッジリターンが伴うという点に注意してください。

次に示すのは、expect-send 文字列を使用する Systems ファイルエントリの例です。

sonora Any ACUEC 9600 2223333 "" ¥r ¥r ogin:-BREAK-ogin: Puucpx ssword: xyzzy

この例は、ローカルホストの UUCP に、2 個のキャリッジリターンを送ってから ogin: (Login: という場合もあるため) を待つように指示しています。ogin を受信しなかった場合は、BREAK を送ります。ogin: を受信した場合は、ログイン名 Puucpx を送ります。ssword: (Password: を表す) を受け取ったら、パスワード xyzzy を送ります。

表 12-2 に、便利なエスケープ文字をいくつか紹介します。

表 12-2 Systems ファイルのチャットスクリプトで使用されるエスケープ文字

¥b

バックスペース文字を送信または想定する 

¥c

文字列の末尾で使用すると、普通なら送信されるキャリッジリターンが抑止される。その他の場合は無視される 

¥d

後続の文字を送る前に 1 〜 3 秒の遅延が生じる 

¥E

エコーチェックを開始する (これ以降は、1 文字送信するたびに、その文字が受信されるのを待つ。以後の作業は、これを受信してから行われる) 

¥e

エコーチェックをオフにする  

¥H

ハングアップを 1 回無視する。このオプションはコールバックモデム用に使用する 

¥K

BREAK 文字を送信する 

¥M

CLOCAL フラグをオンにする

¥m

CLOCAL フラグをオフにする

¥n

改行文字を送信または想定する 

¥N

NULL 文字 (ASCII NUL) を送信する 

¥p

約 1/4 秒間または 1/2 秒間、一時停止する 

¥r

キャリッジリターンを送信または想定する 

¥s

スペース文字を送信または想定する 

¥t

タブ文字を送信または想定する 

EOT

EOT とそれに続く 2 個の改行文字を送信する 

BREAK

ブレーク文字を送信する 

¥ddd

8 進数 (ddd) で表される文字を送信または想定する

チャットスクリプトを用いたコールバックの有効化

組織によっては、リモートコンピュータからの呼び出しを処理するダイヤルインサーバを設定する場合があります。たとえば、コールバックモデムを持つダイヤルインサーバを配備し、社員が自宅のコンピュータから呼び出せるようにすることができます。ダイヤルインサーバは、リモートマシンを識別すると、そのリモートマシンとのリンクを切断し、逆にそのリモートマシンを呼び出します。そして、通信リンクが再確立されます。

Systems ファイルのチャットスクリプトで、コールバックが必要な箇所で ¥H オプションを使用することにより、コールバックの操作を簡素化することができます。ダイヤルインサーバのハングアップが予想される箇所で、expect 文字列の一部として ¥H を使用します。

たとえば、ダイヤルインサーバを呼び出すチャットスクリプトに、次のような文字列が含まれているとします。


INITIATED¥Hogin:

ローカルホストの UUCP ダイヤル機能は、ダイヤルインサーバから INITIATED という文字列を受け取ることを想定しています。INITIATED 文字列を受け取ると、ダイヤル機能は、ダイヤルインサーバがハングアップするまで、その後受信するすべての文字をフラッシュします。そして、ダイヤル機能は、expect 文字列のその次の部分、つまり ogin: という文字列がダイヤルインサーバから送られてくるのを待ちます。ogin: を受け取ると、ダイヤル機能はチャットスクリプトを先へ進めます。

上記のサンプルでは ¥H の前後に文字列が指定されていますが、これらはなくてもかまいません。