Provided by:
manpages-ja_0.5.0.0.20071115-1_all 
CLR_ABORT列
このシーケンスは以前に設定した ABORT 文字列をクリアします。 ABORT
文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; CLR_ABORT
はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納で-
るようにします。
SAY列
SAY ディレクティブにて、 script
が標準エラー出力を介してユーザ端末ヘ文字列を送ることがでい泙后 chat が
pppd から起動される場合、 pppd
はデーモンとして実行され(制御端末から切り離され)、 標準エラー出力は通常
/etc/ppp/connect-errors へとリダイレクトされます。
SAY 文字列は、シングルクォートもしくはダブルクォートにて
括る必要があります。 出力中に-
ャリッジリターンおよびラインフィードが必要な場合、
明示的に文字列中に含める必要があります。
SAY 文字列を使用して script の進捗状況メッセージを表示することで、'ECHO
OFF' しつつもユーザになにが起っているのか示すことが可能です。
例を示します:
ABORT BUSY
ECHO OFF
SAY "Dialling your ISP...\n"
'' ATDT5551212
TIMEOUT 120
SAY "Waiting up to 2 minutes for connection ... "
CONNECT ''
SAY "Connected, now logging in ...\n"
ogin: account
ssword: pass
$ SAY "Logged in OK ...\n" etc ...
このシーケンスは SAY 文字列のみユーザに示し、script の詳細は隠します。
例えば、上 script を実行した場合、ユーザが見るのは以下です:
Dialling your ISP...
Waiting up to 2 minutes for connection ... Connected, now
logging in ...
Logged in OK ...
列
文字列は ABORT 文字列に似ています。
違うのは、その文字列自身とゥ礇螢奪献螢拭璽鹽の 次の制御文字までの
全ての文字がレポートファイルに書かれるということです。
レポート文字列はモデムのコネクト文字列の転送レートと chat
ユーザへのリターン値を切りわけるために使えます。
レポート文字列ロジックの分析は、受信待ち文字列の検索などの
他の文字列処理と同時におこなわれます。
レポート文字列と中断文字列に同じ文字列を使用することも可能ですが、
おそらくあまり使い道がないでしょう。
レポート文字列はプログラムの終了コードに影響を及ぼしません。
これらの「レポート」文字列は、REPORT シーケンスにより
スクリプト中に指定することがでい泙后
それは、以下の例のようにスクリプトに指定します:
REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin:
account
このシーケンスは受信待ちをおこなわず、文字列 ATDT5551212 を送信して
電話をかけます。受信待ち文字列は CONNECT です。 文字列 CONNECT
を受信すると、スクリプトの残りが実行されます。 さらに、文字列 "CONNECT"
と、それに続く接続レートなどの 任意の文字がレポートファイルに-
録されます。
CLR_REPORT列
このシーケンスを使用して、以前に設定した REPORT 文字列をクリア で-
ます。 REPORT
文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; CLR_REPORT
はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納で-
るようにします。
ー
エコーオプションはモデムからの出力を stderr へエコーするか否か
を制御します。 このオプションを -e オプションにて設定することがで-
ますし、 ECHO ァ璽錙璽匹砲得御することもでい泙后
「受信待ち-送信」文字列の組 ECHO ON はエコーを邑にし、 ECHO OFF
は無効にします。 この-
ーワードを使用してどの会話を見せるかを選択可能です。 例えば以下の
script では:
ABORT 'BUSY'
ABORT 'NO CARRIER'
'' ATZ
OK\r\n ATD1234567
\r\n \c
ECHO ON
CONNECT \c
ogin: account
モデム設定結果およびダイヤル結果は見せませんが、 CONNECT (もしくは
BUSY) メッセージ後は全てをエコーします。
断
HANGUP オプションはモデムの回線切断をエラーと扱うか否かを制御します。
このオプションは、 システムにダイヤル後に回線切断しコールバックする
script 中で邑です。 HANGUP オプションは ON もしくは OFF にでい泙后
HANGUP を OFF に設定しモデムを回線切断
(つまりコールバックシステムへの最初のログイン)すると、chat は script
の実行を続けます
(つまり呼び出しと二度目のログインプロンプトを待ちます)。
呼び出しにて接続後すぐに、HANGUP ON ディレクティブを使用して
通常の回線切断シグナルの動作を戻す必要があります。 (簡単な) script
例を示します:
ABORT 'BUSY'
OK\r\n ATD1234567
\r\n \c
CONNECT \c
'Callback login:' call_back_ID
HANGUP OFF
ABORT "Bad Login"
'Callback Password:' Call_back_password
TIMEOUT 120
CONNECT \c
HANGUP ON
ABORT "NO CARRIER"
ogin:--BREAK--ogin: real_account
etc ...
ト
タイムアウトの初期値は 45 秒です。これは -t パラメータにより
変更することがでい泙后
次に受信待ちする文字列のタイムアウト値を変更するには、以下のようにします:
ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5
assword: hello2u2
これは login: プロンプトを受信待ちする際のタイムアウトを 10
秒に変更します。 さらに password
プロンプトを受信待ちする際にはタイムアウトを 5 秒に変更します。
一旦タイムアウト値が変更されると、次に変更されるまでは
そのままになります。
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 条件としてマークされた文字列を
検出したことを示します。
終了コードを使うと、どのイベントによりスクリプトが終了したのかを
判断することがでい泙后 つまり、"NO DIAL TONE" を受信したのか "BUSY"
を受信したのかを 識別することがでい襪箸いΔ海箸任后 最初のイベント
(BUSY) ならばリトライする価値がありますが、 二つ目のイベント (NO DIAL
TONE) だと、 おそらくリトライしてもそれがうまくいく可能-
は低いでしょう。
目
UUCP のドゥ絅瓮鵐箸らも、chat スクリプトに関する
追加情報が得られるでしょう。 chat スクリプトは uucico
プログラムで使われる
スクリプトによって提示されたアイデアを基にしています。
uucico(1), uucp(1), syslog(3), syslogd(8).
権
chat プログラムは、パブリックドメインのソフトウェアです。 これは GNU
のパブリックライセンス (一般公融藩儺諾) とは異なります。
このプログラムを分割する場合には、その両方を管理するようにしてください。