other versions
other languages
CHAT(8) | System Manager's Manual | CHAT(8) |
名称¶
chat - モデム接続の確立を自動化するスクリプト言語書式¶
chat [ options ] script解説¶
chat プログラムはコンピュータとモデムの間のメッセージ交換を制御します。 このコマンドの主な目的は、Point-to-Point Protocol デーモン ( pppd) と リモートの pppd プロセスの間の接続を確立することです。オプション¶
- -f <chat file>
- チャットスクリプトを chat file から読み込みます。このオプションと script パラメータとは、互いに排他の関係にあります。 chat コマンドを実行するユーザは、このファイルのリードアクセス権を 持っていなければなりません。このファイルの中では、文字列の区切りとして スペースとタブを使うことができます。
- -t <timeout>
- 文字列の受信待ちのタイムアウトを指定します。もし、タイムリミットまでに 指定された文字列を受信できなかった場合には、応答文字列の送信をおこないません。 この時、かわりの応答文字列が指定されていれば それが送信され、 指定されていなければ スクリプトの実行が失敗します。 スクリプトの実行が失敗すると、 chat プログラムは 0 以外のエラーコードを返して終了します。
- -r <report file>
- レポート文字列を出力するファイルを指定します。 キーワード REPORT を用いると、結果の文字列がこのファイルに 出力されます。このオプションを指定せずに REPORT キーワードを 使用すると、レポート文字列は stderr に出力されます。
- -e
- エコーオプションを有効にして開始します。 chat スクリプトの特定の場所において ECHO キーワードにて エコーの有効および無効を切り替えることができます。 エコーが有効にされると、モデムからの出力は全て stderr へエコーされます。
- -v
- chat スクリプトを冗長モードで実行します。 これを指定すると、 chat プログラムは、チャットスクリプトの実行状態、 モデムから受信した全てのテキスト、 モデムに送った全てのテキストのログをとります。 デフォルトでは syslogd(8) を介して取得します。ログの方法は -S および -s のフラグで変更できます。 冗長トレースのログとりは local2 ファシリティのレベル info でおこなわれ、エラーについてはレベル err が使われます。
- -V
- chat スクリプトを標準エラー出力冗長モードにて実行するように要求します。 chat プログラムは、 モデムから受信する全てのテキストおよびモデムへ送信する全てのテキストを 標準エラー出力デバイスへログします。 chat もしくは pppd プログラムを動作させている場所では、 このデバイスは通常ローカルのコンソールです。
- -s
- 標準エラー出力を使用します。'-v' による全ログメッセージ および全エラーメッセージを標準エラー出力へ送られます。
- -S
- syslog(3) を使用しません。デフォルトではエラーメッセージは syslog(3) へ送られます。-S を使用すると '-v' によるログおよびエラーメッセージは syslog(3) へは送られなくなります。
- -T <phone number>
- 送信文字列において \T 置換メタ文字を置き換える任意の文字列を渡します。 通常は電話番号です。
- -U <phone number 2>
- 送信文字列において \U 置換メタ文字を置き換える第 2 文字列を渡します。 通常は電話番号です。 2 つの番号を要する ISDN ターミナルアダプタでタイアルする場合に有用です。
- script
- -f オプションのファイルでスクリプトが指定されていなければ、 chat プログラムに対するパラメータ文字列が スクリプトとして読み込まれます。
チャットスクリプト¶
chat スクリプトには通信の手順を定義します。 スクリプトは一つまたはそれ以上の「受信待ち-送信」文字列の組からなり、 それぞれは空白で区切られています。 オプションとして「副受信待ち-副送信」文字列の組を追加することもでき、 その場合には以下の例のようにダッシュで区切ります:- ogin:-BREAK-ogin: ppp ssword: hello2u2
- ogin: ppp ssword: hello2u2
- ogin:--ogin: ppp ssword: hello2u2
コメント¶
コメントを chat スクリプト中に埋め込むことが可能です。 コメントは # (ハッシュ) 文字をカラム 1 から開始する行です。 このようなコメント行は chat プログラムは単に無視します。 「受信待ち」文字列の最初の文字が `#' 文字の場合、 「受信待ち」文字列をクォートする必要があります。 文字 # (ハッシュ)から始まるプロンプトを待ちたい場合には、 以下のように書かねばならないでしょう:- # Now wait for the prompt and send logout string
中断文字列¶
多くのモデムはダイヤルの結果を文字列としてレポートします。 これらの文字列は CONNECTED だったり、 NO CARRIER や BUSY だったりするでしょう。 モデムが相手との接続に失敗した場合には、スクリプトを終了させたいと 思うことがよくあるでしょう。 問題は、どの文字列を次に受信するかということを、 スクリプトが正確に知ることはできないということです。 ある時には BUSY を受信するかもしれませんが、 次には NO CARRIER を受信するかもしれません。 これらの「中断」文字列は、 ABORT シーケンスにより スクリプト中に指定することができます。 それは、以下の例のようにスクリプトに指定します:- ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT
CLR_ABORT 文字列¶
このシーケンスは以前に設定した ABORT 文字列をクリアします。 ABORT 文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; CLR_ABORT はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納できるようにします。SAY 文字列¶
SAY ディレクティブにて、 script が標準エラー出力を介してユーザ端末ヘ文字列を送ることができます。 chat が pppd から起動される場合、 pppd はデーモンとして実行され(制御端末から切り離され)、 標準エラー出力は通常 /etc/ppp/connect-errors へとリダイレクトされます。 SAY 文字列は、シングルクォートもしくはダブルクォートにて 括る必要があります。 出力中にキャリッジリターンおよびラインフィードが必要な場合、 明示的に文字列中に含める必要があります。 SAY 文字列を使用して script の進捗状況メッセージを表示することで、'ECHO OFF' しつつもユーザになにが起っているのか示すことが可能です。 例を示します:- ABORT BUSY
- Dialling your ISP...
レポート文字列¶
レポート 文字列は ABORT 文字列に似ています。 違うのは、その文字列自身とキャリッジリターン等の 次の制御文字までの 全ての文字がレポートファイルに書かれるということです。 レポート文字列はモデムのコネクト文字列の転送レートと chat ユーザへのリターン値を切りわけるために使えます。 レポート文字列ロジックの分析は、受信待ち文字列の検索などの 他の文字列処理と同時におこなわれます。 レポート文字列と中断文字列に同じ文字列を使用することも可能ですが、 おそらくあまり使い道がないでしょう。 レポート文字列はプログラムの終了コードに影響を及ぼしません。 これらの「レポート」文字列は、 REPORT シーケンスにより スクリプト中に指定することができます。 それは、以下の例のようにスクリプトに指定します:- REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account
CLR_REPORT 文字列¶
このシーケンスを使用して、以前に設定した REPORT 文字列をクリア できます。 REPORT 文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; CLR_REPORT はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納できるようにします。エコー¶
エコーオプションはモデムからの出力を stderr へエコーするか否か を制御します。 このオプションを -e オプションにて設定することができますし、 ECHO キーワードにて制御することもできます。 「受信待ち-送信」文字列の組 ECHO ON はエコーを有効にし、 ECHO OFF は無効にします。 このキーワードを使用してどの会話を見せるかを選択可能です。 例えば以下の script では:- ABORT 'BUSY'
回線切断¶
HANGUP オプションはモデムの回線切断をエラーと扱うか否かを制御します。 このオプションは、 システムにダイヤル後に回線切断しコールバックする script 中で有効です。 HANGUP オプションは ON もしくは OFF にできます。- ABORT 'BUSY'
タイムアウト¶
タイムアウトの初期値は 45 秒です。これは -t パラメータにより 変更することができます。 次に受信待ちする文字列のタイムアウト値を変更するには、以下のようにします:- ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2
EOT の送信¶
チャットプログラムは特殊な応答文字列 EOT により、 リモート側へ EOT 文字を送信します。 通常、これはファイル終了を表す文字です。 EOT に続けてリターン文字が送られることはありません。 ^D シーケンスを使って EOT を送信文字列に埋め込むことができます。ブレークの生成¶
特殊な応答文字列 BREAK により、ブレーク信号が送られます。 ブレークは送信側では特殊な信号として扱われます。 受信側では通常、転送レートの変更要求として処理されます。 これにより、正常に login プロンプトを受信できるまで ブレーク信号を送ることで、リモート側がサポートしている転送レートを 順次切り替えさせることができます。 \K シーケンスを使ってブレーク信号を送信文字列に埋め込むことができます。エスケープシーケンス¶
受信待ち文字列と応答文字列には、エスケープシーケンスを指定することができます。 応答文字列では、全てのエスケープシーケンスが使えます。 受信待ち文字列では、ほとんどのエスケープシーケンスが使えます。 受信待ち文字列では使えないエスケープシーケンスについては、 説明文中にそのことが書かれています。- ''
- 空文字列を受信待ちしたり、送信したりします。 もし、空文字列を送信しようとすると、それはリターン文字を送ることになります。 このシーケンスはアポストロフィ文字またはクォート文字のペアの どちらでもかまいません。
- \b
- バックスペース文字を表します。
- \c 応答文字列の末尾の改行を抑制します。
- これは末尾に改行文字のつかない文字列を送る唯一の方法です。 これは送信文字列の最後に置かれなければいけません。 たとえば、文字列 hello\c は単に h, e, l, l, o という文字だけを送ります。 (受信待ち文字列では使えません)
- \d
- 1 秒のディレイです。プログラムは 1 秒のディレイのために sleep(1) を使います。 (受信待ち文字列では使えません)
- \K
- ブレーク信号を挿入します。 (受信待ち文字列では使えません)
- \n
- 改行文字を送信します。
- \N
- 空 (null) 文字を送信します。\0 でも同じシーケンスを表すことができます。 (受信待ち文字列では使えません)
- \p
- 1 秒以下のポーズです。ディレイ時間は 1/10 秒です。 (受信待ち文字列では使えません)
- \q
- syslogd(8) への文字列出力を抑止します。 かわりに文字列 ?????? がログに出力されます。 (受信待ち文字列では使えません)
- \r
- キャリッジリターン文字を送信または受信待ちします。
- \s
- 文字列中のスペース文字を表します。 これはスペースを含む文字列をクォートしたくない場合に使います。 シーケンス 'HI TIM' と HI\sTIM は等価です。
- \t
- タブ文字を送信または受信待ちします。
- \\
- バックスラッシュ文字を送信または受信待ちします。
- \ddd
- 8 進数 (ddd) を一つの ASCII 文字に変換し、その文字を送信します。 (受信待ち文字列では使えない文字がいくつかあります)
- ^C
- C で表現される制御文字に置きかえられます。 例えば、文字 DC1 (17) は ^Q で表されます。 (受信待ち文字列では使えない文字がいくつかあります)
終了コード¶
chat プログラムは以下の終了コードを返します。- 0
- プログラムは正常終了しました。これは、スクリプトがエラーを起こさずに 実行されて、正常に終了したことを示します。
- 1
- 一つまたはそれ以上のパラメータが不正であるか、受信待ち文字列が 内部バッファよりも大きすぎます。これはプログラムが正しく 実行されなかったことを示します。
- 2
- プログラムの実行中にエラーが発生しました。これは、何らかの理由で リードまたはライトの操作が失敗したか、chat が SIGINT のような シグナルを受信したためでしょう。
- 3
- 「-副送信」文字列のない受信待ち文字列があり、タイムアウトイベントが 発生しました。これは、スクリプトが正しくプログラムされていないか、 予期しないイベントが発生して受信待ち文字列を見つけられなかったためでしょう。
- 4
- ABORT 条件としてマークされた 1 番目の文字列を検出しました。
- 5
- ABORT 条件としてマークされた 2 番目の文字列を検出しました。
- 6
- ABORT 条件としてマークされた 3 番目の文字列を検出しました。
- 7
- ABORT 条件としてマークされた 4 番目の文字列を検出しました。
- ...
- その他の終了コードも、ABORT 条件としてマークされた文字列を 検出したことを示します。
関連項目¶
UUCP のドキュメントからも、 chat スクリプトに関する 追加情報が得られるでしょう。 chat スクリプトは uucico プログラムで使われる スクリプトによって提示されたアイデアを基にしています。 uucico(1), uucp(1), syslog(3), syslogd(8).著作権¶
chat プログラムは、パブリックドメインのソフトウェアです。 これは GNU のパブリックライセンス (一般公有使用許諾) とは異なります。 このプログラムを分割する場合には、その両方を管理するようにしてください。27 Sep 1997 | Chat Version 1.17 |