このフィールド (Login フィールドとも呼ばれる) には、「chat スクリプト」と呼ばれる文字列が入ります。chat スクリプトには、ローカルマシンとリモートマシンが対話の最初の時点で互いに受け渡ししなければならない文字が含まれています。chat スクリプトの形式は次のとおりです。
expect send [expect send] ....
expect は、対話を開始するために、ローカルホストがリモートホストから受信することを想定している文字列です。send は、ローカルホストが、リモートホストからの expect 文字列を受信したあとで送信する文字列です。chat スクリプトには、複数の expect-send シーケンスを含めることもできます。
ローカルホストがリモートマシンから受信することを想定しているログインプロンプト
ログインするためにローカルホストがリモートマシンに送るログイン名
ローカルホストがリモートマシンから受信することを想定しているパスワードプロンプト
ローカルホストがリモートマシンに送るパスワード
expect フィールドは、次の形式のサブフィールドを持つことができます。
expect[-send-expect]...
-send は、その前の expect が正常に読み取れなかった場合に送られるものであり、-send のあとの -expect は、その次に送られてくると想定されている文字列です。
たとえば、login--login という文字列を指定した場合、ローカルホストの UUCP は login が送られてくることを想定します。リモートマシンから login を受信すると、UUCP は次のフィールドに進みます。login を受信しなかった場合は、UUCP はキャリッジリターンを送信し、再度 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 を送ります。
表 26–1 Systems ファイルの chat スクリプトで使用されるエスケープ文字
エスケープ文字 |
意味 |
---|---|
\b |
バックスペース文字を送信または想定します。 |
\c |
文字列の末尾で使用すると、普通なら送信されるキャリッジリターンが抑止されます。その他の場合は無視されます。 |
\d |
後続の文字を送る前に 1 〜 3 秒の遅延が生じます。 |
\E |
エコーチェックを開始します。これ以降は、1 文字送信するたびに、UUCP はその文字が受信されるまで待ち、その後、チェックを続行します。 |
\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 |
BREAK 文字を送信します。 |
\ddd |
8 進数 (ddd) で表される文字を送信または想定します。 |