1 .\" Japanese Version Copyright (c) 2000 Asakawa Satoshi
2 .\" all rights reserved.
3 .\" Translated Wed Dec 20 16:25:58 JST 2000
4 .\" by Asakawa Satoshi <rod@i.am>
6 .TH AUTOEXPECT 1 "30 June 1995"
8 autoexpect \- セッションを監視することによりExpectスクリプトを生成する
21 autoexpectは、あなたとプログラムとの対話を監視し、
22 その対話を再現するExpectスクリプトを生成する。
24 スクリプトを手作業で書くのに比べ相当な時間を節約できる。
25 たとえあなたがExpectのエキスパートだとしても、対話のより機械的な部分を
26 自動化するためにautoexpectを使うと便利であることが分かるだろう。
27 autoexpectの生成したスクリプトの一部をカットアンドペーストした方が
29 そしてもしあなたが初心者だとしたら、Expectについて何も知らなくても
30 autoexpectの起動方法を習うだけで用が足りるかもしれない。
32 autoexpectを使う最も簡単な方法は、
33 コマンドラインから引数なしで呼び出すことである。
40 プログラム名と引数が与えられるとautoexpectはそのプログラムを起動する。
44 % autoexpect ftp ftp.cme.nist.gov
46 一旦プログラムが起動されれば、対話は通常と変わらない。
47 あなたが起動したシェル(または、指定したプログラム)を終了すると
48 autoexpectは新しいスクリプトを生成する。
49 デフォルトでは"script.exp"ファイルに書き込まれる。
50 \-fフラグを使うとファイル名を指定することができる。
52 次は"ftp ftp.cme.nist.gov"を実行し、結果のExpectスクリプトを
56 % autoexpect \-f nist ftp ftp.cme.nist.gov
59 autoexpectが生成するスクリプトは動作が保証されている訳ではないという点を
61 なぜならば、確かな事柄や時々間違うことを推測しなければならないのだから。
62 しかしながら、通常はこれらの問題を特定し解決することはとても簡単である。
69 驚くほど多くのプログラム(rn, ksh, zsh, telnet, 等)やデバイス(例えばモデム)
70 は、プロンプトの後の早すぎるキー入力を無視する。
71 もし特定の場所でスクリプトが切れてしまう場合は、先の送信の直前に
74 生成されたスクリプトの先頭近くにある"force_conservative"変数を有効にする
75 ことにより、この働きを全体にわたって強制的に行うことができる。
76 この"conservative"モードでは、各々の文字送信の前に自動的に
78 全てのプログラムに対してこの方法は有効である。
80 このconservativeモードは、スクリプトの実行がどれほど早いのかは気にせず、
81 ただタイミングの問題か否かを手っ取り早く確かめたいのなら便利である。
82 \-cフラグを付けて実行すると同等のモードを強制することができる。
84 幸運にも、このようなタイミングの場所は稀である。
85 例えば、telnetはエスケープシーケンスを入力した後のみ文字列を無視する。
86 モデムは初回接続直後に文字列を無視するだけである。
87 また少数だがこの働きを無効にするスイッチを持つプログラムもある。
88 例えば、rnの\-Tフラグはこの働きを無効にする。
90 次は、conservativeモードで実行する例である。
96 \-Cフラグはconservativeモードを切り換えるためのキーを定義する。
97 次は、^Lを切り換えキーと定義し(non-conservativeモードで)実行する例である。
104 次は、^Lを切り換えキーと定義しconservativeモードで実行する例である。
107 autoexpect \-c \-C ^L
113 多くのプログラムが文字をエコーする。例えば、シェルに対して
114 "more"とタイプすると、autoexpectには以下のように見える:
126 そのプログラムに対する特有の知識が無いと、
127 エコーされた文字を待ってから、次の文字をタイプしているのかどうかを
129 autoexpectは、文字列がエコーされていると見なすと、元々の対話手順のように
130 細切れに対話するのではなく、グループとして全てを一度に送信できると判断する。
132 しかし、本当にエコーを待ってから入力しなければならない場合には、
138 autoexpectは対話で生じたすべての文字をスクリプト内に記録する。
139 この事は、どの文字が重要でどの文字は置き換えられるかを判断できるため、
142 しかし一方では、実行する度に異なる出力を生じるコマンドを使う場合、
143 生成されたスクリプトは正しく動作しないかもしれない。
144 例えば、dateコマンドは常に異なる出力を生成する。
145 そのため、autoexpect実行中にdateコマンドを使うと、生成したスクリプトを
146 働かせるためには間違い無く修正が必要になるだろう。
148 \-pフラグは、autoexpectをpromptモードにする。
149 このモードでは、autoexpectはプログラムの出力する最終行(普通はプロンプト)
151 このモードは、上述のdateコマンドの問題や他のほとんどの変化の問題を扱う
154 次は、promptモードで実行する例である。
160 \-Pフラグはpromptモードを切り換えるためのキーを定義する。
161 次は、^Pを切り換えキーと定義し(non-promptモードで)実行する例である。
168 次は、^Pを切り換えキーと定義しpromptモードで実行する例である。
171 autoexpect \-p \-P ^P
176 フラグは、autoexpectのメッセージ出力を非表示にする。
180 引用文字は、切り替えキーとして使われるためautoexpectが別の意味に取って
181 しまう文字を入力するために使うことができる。
183 次は、引用文字と一緒に複数のフラグを定義する例である。
184 引用文字は、切り替えキーを文字通り入力する方法として提供される。
187 autoexpect \-P ^P \-C ^L \-Q ^Q
192 Expectプログラムのための様式があるか否か分からないが、
193 明らかにautoexpectはどのような様式のモデルにも縛られるべきではない。
194 例えば、コンピュータ生成スクリプト用に意図された Expectプログラムの特徴を
196 だから、autoexpectによって生成されたかのようなスクリプトを
199 しかし一方では、autoexpectのスクリプトは価値のある事を示している。
200 例えば、autoexpectを通して実行することにより、
201 Tclスクリプトの中で使用する目的では、どのように文字列は引用されなければ
206 "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs"
208 O'Reilly and Associates, January 1995.
210 Don Libes, National Institute of Standards and Technology
217 これらのプログラムあるいは一部が使われたなら、
218 NISTと著者への謝辞を述べてもらいたい。