OSDN Git Service

Convert release and draft pages to UTF-8.
[linuxjm/jm.git] / manual / expect / release / man1 / autoexpect.1
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>
5 .\"
6 .TH AUTOEXPECT 1 "30 June 1995"
7 .SH 名前
8 autoexpect \- セッションを監視することによりExpectスクリプトを生成する
9
10 .SH 書式
11 .B autoexpect
12 [
13 .I args
14 ]
15 [
16 .I program args...
17 ]
18 .br
19 .SH イントロダクション
20
21 autoexpectは、あなたとプログラムとの対話を監視し、
22 その対話を再現するExpectスクリプトを生成する。
23 直線的なスクリプトなので、
24 スクリプトを手作業で書くのに比べ相当な時間を節約できる。
25 たとえあなたがExpectのエキスパートだとしても、対話のより機械的な部分を
26 自動化するためにautoexpectを使うと便利であることが分かるだろう。
27 autoexpectの生成したスクリプトの一部をカットアンドペーストした方が
28 ゼロから書き始めるよりとても簡単である。
29 そしてもしあなたが初心者だとしたら、Expectについて何も知らなくても
30 autoexpectの起動方法を習うだけで用が足りるかもしれない。
31
32 autoexpectを使う最も簡単な方法は、
33 コマンドラインから引数なしで呼び出すことである。
34 デフォルトでシェルを起動する。
35 .br
36 例:
37 .br
38         % autoexpect
39
40 プログラム名と引数が与えられるとautoexpectはそのプログラムを起動する。
41 .br
42 例:
43 .br
44         % autoexpect ftp ftp.cme.nist.gov
45
46 一旦プログラムが起動されれば、対話は通常と変わらない。
47 あなたが起動したシェル(または、指定したプログラム)を終了すると
48 autoexpectは新しいスクリプトを生成する。
49 デフォルトでは"script.exp"ファイルに書き込まれる。 
50 \-fフラグを使うとファイル名を指定することができる。
51
52 次は"ftp ftp.cme.nist.gov"を実行し、結果のExpectスクリプトを
53 "nist"ファイルへ格納する例である。
54 .nf
55
56         % autoexpect \-f nist ftp ftp.cme.nist.gov
57
58 .fi
59 autoexpectが生成するスクリプトは動作が保証されている訳ではないという点を
60 理解しておくことが重要である。
61 なぜならば、確かな事柄や時々間違うことを推測しなければならないのだから。
62 しかしながら、通常はこれらの問題を特定し解決することはとても簡単である。
63 .br
64 典型的な問題点は:
65 .RS
66 .TP 4
67 \(bu
68 タイミングの問題。
69 驚くほど多くのプログラム(rn, ksh, zsh, telnet, 等)やデバイス(例えばモデム)
70 は、プロンプトの後の早すぎるキー入力を無視する。
71 もし特定の場所でスクリプトが切れてしまう場合は、先の送信の直前に
72 短いスリープの追加を試みよ。
73
74 生成されたスクリプトの先頭近くにある"force_conservative"変数を有効にする
75 ことにより、この働きを全体にわたって強制的に行うことができる。
76 この"conservative"モードでは、各々の文字送信の前に自動的に
77 短いポーズ(0.1秒)を入れる。
78 全てのプログラムに対してこの方法は有効である。
79
80 このconservativeモードは、スクリプトの実行がどれほど早いのかは気にせず、
81 ただタイミングの問題か否かを手っ取り早く確かめたいのなら便利である。
82 \-cフラグを付けて実行すると同等のモードを強制することができる。
83
84 幸運にも、このようなタイミングの場所は稀である。
85 例えば、telnetはエスケープシーケンスを入力した後のみ文字列を無視する。
86 モデムは初回接続直後に文字列を無視するだけである。
87 また少数だがこの働きを無効にするスイッチを持つプログラムもある。
88 例えば、rnの\-Tフラグはこの働きを無効にする。
89
90 次は、conservativeモードで実行する例である。
91 .nf
92
93         autoexpect \-c
94
95 .fi
96 \-Cフラグはconservativeモードを切り換えるためのキーを定義する。
97 次は、^Lを切り換えキーと定義し(non-conservativeモードで)実行する例である。
98 (注: ^Lはコントロール+Lを示す)
99 .nf
100
101         autoexpect \-C ^L
102
103 .fi
104 次は、^Lを切り換えキーと定義しconservativeモードで実行する例である。
105 .nf
106
107         autoexpect \-c \-C ^L
108
109 .fi
110 .TP
111 \(bu
112 エコーの問題。
113 多くのプログラムが文字をエコーする。例えば、シェルに対して
114 "more"とタイプすると、autoexpectには以下のように見える:
115 .nf
116
117         you typed 'm',
118         computer typed 'm',
119         you typed 'o',
120         computer typed 'o',
121         you typed 'r',
122         computer typed 'r',
123         ...
124 .fi
125
126 そのプログラムに対する特有の知識が無いと、
127 エコーされた文字を待ってから、次の文字をタイプしているのかどうかを
128 知ることは困難である。
129 autoexpectは、文字列がエコーされていると見なすと、元々の対話手順のように
130 細切れに対話するのではなく、グループとして全てを一度に送信できると判断する。
131 このためスクリプトが読み易くなる。
132 しかし、本当にエコーを待ってから入力しなければならない場合には、
133 間違った動作となることが考えられる。
134
135 .TP
136 \(bu
137 変化の問題。
138 autoexpectは対話で生じたすべての文字をスクリプト内に記録する。
139 この事は、どの文字が重要でどの文字は置き換えられるかを判断できるため、
140 好ましいことである。
141
142 しかし一方では、実行する度に異なる出力を生じるコマンドを使う場合、
143 生成されたスクリプトは正しく動作しないかもしれない。
144 例えば、dateコマンドは常に異なる出力を生成する。
145 そのため、autoexpect実行中にdateコマンドを使うと、生成したスクリプトを
146 働かせるためには間違い無く修正が必要になるだろう。
147
148 \-pフラグは、autoexpectをpromptモードにする。
149 このモードでは、autoexpectはプログラムの出力する最終行(普通はプロンプト)
150 だけを記録する。
151 このモードは、上述のdateコマンドの問題や他のほとんどの変化の問題を扱う
152 ことができる。
153
154 次は、promptモードで実行する例である。
155 .nf
156
157         autoexpect \-p
158
159 .fi
160 \-Pフラグはpromptモードを切り換えるためのキーを定義する。
161 次は、^Pを切り換えキーと定義し(non-promptモードで)実行する例である。
162 (注: ^Pはコントロール+Pを示す)
163 .nf
164
165         autoexpect \-P ^P
166
167 .fi
168 次は、^Pを切り換えキーと定義しpromptモードで実行する例である。
169 .nf
170
171         autoexpect \-p \-P ^P
172
173 .fi
174 .SH 他のフラグ
175 .B \-quiet
176 フラグは、autoexpectのメッセージ出力を非表示にする。
177
178 .B \-Q
179 フラグは、引用文字を定義する。
180 引用文字は、切り替えキーとして使われるためautoexpectが別の意味に取って
181 しまう文字を入力するために使うことができる。
182
183 次は、引用文字と一緒に複数のフラグを定義する例である。
184 引用文字は、切り替えキーを文字通り入力する方法として提供される。
185 .nf
186
187         autoexpect \-P ^P \-C ^L \-Q ^Q
188
189 .fi
190 .SH 様式(STYLE)
191
192 Expectプログラムのための様式があるか否か分からないが、
193 明らかにautoexpectはどのような様式のモデルにも縛られるべきではない。
194 例えば、コンピュータ生成スクリプト用に意図された Expectプログラムの特徴を
195 autoexpectは利用している。
196 だから、autoexpectによって生成されたかのようなスクリプトを
197 忠実に記述してみてはならない。
198
199 しかし一方では、autoexpectのスクリプトは価値のある事を示している。
200 例えば、autoexpectを通して実行することにより、
201 Tclスクリプトの中で使用する目的では、どのように文字列は引用されなければ
202 ならないかを簡単に知ることができる。
203
204 .SH 関連項目
205 .I
206 "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs"
207 \fRby Don Libes,
208 O'Reilly and Associates, January 1995.
209 .SH 著者
210 Don Libes, National Institute of Standards and Technology
211
212 .\"0 .B autoexpect
213 .B expect
214
215 .B autoexpect
216 は、パブリックドメインである。
217 これらのプログラムあるいは一部が使われたなら、
218 NISTと著者への謝辞を述べてもらいたい。
219
220
221