File: pxssh.html

package info (click to toggle)
pexpect 2.1-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 584 kB
  • ctags: 701
  • sloc: python: 3,036; makefile: 46
file content (377 lines) | stat: -rw-r--r-- 36,904 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377

<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module pxssh</title>
</head><body bgcolor="#f0f0f8">

<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>pxssh</strong></big></big> (version 2.1)</font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/noah/documents/export/engineering/source/python/pexpect/trunk/pexpect/pxssh.py">/home/noah/documents/export/engineering/source/python/pexpect/trunk/pexpect/pxssh.py</a></font></td></tr></table>
    <p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
    
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="pexpect.html#spawn">pexpect.spawn</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="pxssh.html#pxssh">pxssh</a>
</font></dt></dl>
</dd>
</dl>
 <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="pxssh">class <strong>pxssh</strong></a>(<a href="pexpect.html#spawn">pexpect.spawn</a>)</font></td></tr>
    
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>This&nbsp;class&nbsp;extends&nbsp;pexpect.<a href="pexpect.html#spawn">spawn</a>&nbsp;to&nbsp;specialize&nbsp;setting&nbsp;up&nbsp;SSH&nbsp;connections.<br>
This&nbsp;adds&nbsp;methods&nbsp;for&nbsp;login,&nbsp;logout,&nbsp;and&nbsp;expecting&nbsp;the&nbsp;prompt.<br>
It&nbsp;does&nbsp;various&nbsp;hacky&nbsp;things&nbsp;to&nbsp;handle&nbsp;any&nbsp;situation&nbsp;in&nbsp;the&nbsp;SSH&nbsp;login&nbsp;process.<br>
For&nbsp;example,&nbsp;if&nbsp;the&nbsp;session&nbsp;is&nbsp;your&nbsp;first&nbsp;login,&nbsp;then&nbsp;it&nbsp;automatically<br>
accepts&nbsp;the&nbsp;certificate;&nbsp;or&nbsp;if&nbsp;you&nbsp;have&nbsp;public&nbsp;key&nbsp;authentication&nbsp;setup<br>
and&nbsp;you&nbsp;don't&nbsp;need&nbsp;a&nbsp;password&nbsp;then&nbsp;this&nbsp;is&nbsp;OK&nbsp;too.<br>
&nbsp;<br>
Example&nbsp;usage&nbsp;that&nbsp;runs&nbsp;'ls&nbsp;-l'&nbsp;on&nbsp;server&nbsp;and&nbsp;prints&nbsp;the&nbsp;result:<br>
&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;<a href="#pxssh">pxssh</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;<a href="#pxssh">pxssh</a>.<a href="#pxssh">pxssh</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;s.login&nbsp;('localhost',&nbsp;'myusername',&nbsp;'mypassword'):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"SSH&nbsp;session&nbsp;failed&nbsp;on&nbsp;login."<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;str(s)<br>
&nbsp;&nbsp;&nbsp;&nbsp;else:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"SSH&nbsp;session&nbsp;login&nbsp;successful"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.sendline&nbsp;('ls&nbsp;-l')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.<a href="#pxssh-prompt">prompt</a>()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;match&nbsp;the&nbsp;prompt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;s.before&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;print&nbsp;everything&nbsp;before&nbsp;the&nbsp;prompt.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.<a href="#pxssh-logout">logout</a>()<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="pxssh.html#pxssh">pxssh</a></dd>
<dd><a href="pexpect.html#spawn">pexpect.spawn</a></dd>
<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="pxssh-__init__"><strong>__init__</strong></a>(self)</dt></dl>

<dl><dt><a name="pxssh-login"><strong>login</strong></a>(self, server, username, password<font color="#909090">=''</font>, terminal_type<font color="#909090">='ansi'</font>, original_prompts<font color="#909090">='][#$]|~[#$]|bash.*?[#$]|[#$] '</font>, login_timeout<font color="#909090">=10</font>)</dt><dd><tt>This&nbsp;logs&nbsp;the&nbsp;user&nbsp;into&nbsp;the&nbsp;given&nbsp;server.&nbsp;By&nbsp;default&nbsp;the&nbsp;prompt&nbsp;is<br>
rather&nbsp;optimistic&nbsp;and&nbsp;should&nbsp;be&nbsp;considered&nbsp;more&nbsp;of&nbsp;an&nbsp;example.&nbsp;It's<br>
better&nbsp;to&nbsp;try&nbsp;to&nbsp;match&nbsp;the&nbsp;prompt&nbsp;as&nbsp;exactly&nbsp;as&nbsp;possible&nbsp;to&nbsp;prevent<br>
any&nbsp;false&nbsp;matches&nbsp;by&nbsp;server&nbsp;strings&nbsp;such&nbsp;as&nbsp;a&nbsp;"Message&nbsp;Of&nbsp;The&nbsp;Day"&nbsp;or<br>
something.&nbsp;The&nbsp;closer&nbsp;you&nbsp;can&nbsp;make&nbsp;the&nbsp;original_prompt&nbsp;match&nbsp;your&nbsp;real&nbsp;prompt<br>
then&nbsp;the&nbsp;better.&nbsp;A&nbsp;timeout&nbsp;will&nbsp;not&nbsp;necessarily&nbsp;cause&nbsp;the&nbsp;login&nbsp;to&nbsp;fail.<br>
In&nbsp;the&nbsp;case&nbsp;of&nbsp;a&nbsp;timeout&nbsp;we&nbsp;assume&nbsp;that&nbsp;the&nbsp;prompt&nbsp;was&nbsp;so&nbsp;weird&nbsp;that<br>
we&nbsp;could&nbsp;not&nbsp;match&nbsp;it.&nbsp;We&nbsp;still&nbsp;try&nbsp;to&nbsp;reset&nbsp;the&nbsp;prompt&nbsp;to&nbsp;something<br>
more&nbsp;unique.&nbsp;If&nbsp;that&nbsp;still&nbsp;fails&nbsp;then&nbsp;we&nbsp;return&nbsp;False.</tt></dd></dl>

<dl><dt><a name="pxssh-logout"><strong>logout</strong></a>(self)</dt><dd><tt>This&nbsp;sends&nbsp;exit.&nbsp;If&nbsp;there&nbsp;are&nbsp;stopped&nbsp;jobs&nbsp;then&nbsp;this&nbsp;sends&nbsp;exit&nbsp;twice.</tt></dd></dl>

<dl><dt><a name="pxssh-prompt"><strong>prompt</strong></a>(self, timeout<font color="#909090">=20</font>)</dt><dd><tt>This&nbsp;expects&nbsp;the&nbsp;prompt.&nbsp;This&nbsp;returns&nbsp;True&nbsp;if&nbsp;the&nbsp;prompt&nbsp;was&nbsp;matched.<br>
This&nbsp;returns&nbsp;False&nbsp;if&nbsp;there&nbsp;was&nbsp;a&nbsp;timeout.</tt></dd></dl>

<dl><dt><a name="pxssh-set_unique_prompt"><strong>set_unique_prompt</strong></a>(self, optional_prompt<font color="#909090">=None</font>)</dt><dd><tt>This&nbsp;attempts&nbsp;to&nbsp;reset&nbsp;the&nbsp;shell&nbsp;prompt&nbsp;to&nbsp;something&nbsp;more&nbsp;unique.<br>
This&nbsp;makes&nbsp;it&nbsp;easier&nbsp;to&nbsp;match&nbsp;unambiguously.</tt></dd></dl>

<hr>
Methods inherited from <a href="pexpect.html#spawn">pexpect.spawn</a>:<br>
<dl><dt><a name="pxssh-__del__"><strong>__del__</strong></a>(self)</dt><dd><tt>This&nbsp;makes&nbsp;sure&nbsp;that&nbsp;no&nbsp;system&nbsp;resources&nbsp;are&nbsp;left&nbsp;open.<br>
Python&nbsp;only&nbsp;garbage&nbsp;collects&nbsp;Python&nbsp;objects.&nbsp;OS&nbsp;file&nbsp;descriptors<br>
are&nbsp;not&nbsp;Python&nbsp;objects,&nbsp;so&nbsp;they&nbsp;must&nbsp;be&nbsp;handled&nbsp;explicitly.<br>
If&nbsp;the&nbsp;child&nbsp;file&nbsp;descriptor&nbsp;was&nbsp;opened&nbsp;outside&nbsp;of&nbsp;this&nbsp;class<br>
(passed&nbsp;to&nbsp;the&nbsp;constructor)&nbsp;then&nbsp;this&nbsp;does&nbsp;not&nbsp;close&nbsp;it.</tt></dd></dl>

<dl><dt><a name="pxssh-__iter__"><strong>__iter__</strong></a>(self)</dt><dd><tt>This&nbsp;is&nbsp;to&nbsp;support&nbsp;iterators&nbsp;over&nbsp;a&nbsp;file-like&nbsp;object.</tt></dd></dl>

<dl><dt><a name="pxssh-__str__"><strong>__str__</strong></a>(self)</dt><dd><tt>This&nbsp;returns&nbsp;the&nbsp;current&nbsp;state&nbsp;of&nbsp;the&nbsp;pexpect&nbsp;object&nbsp;as&nbsp;a&nbsp;string.</tt></dd></dl>

<dl><dt><a name="pxssh-close"><strong>close</strong></a>(self, force<font color="#909090">=True</font>)</dt><dd><tt>This&nbsp;closes&nbsp;the&nbsp;connection&nbsp;with&nbsp;the&nbsp;child&nbsp;application.<br>
Note&nbsp;that&nbsp;calling&nbsp;<a href="#pxssh-close">close</a>()&nbsp;more&nbsp;than&nbsp;once&nbsp;is&nbsp;valid.<br>
This&nbsp;emulates&nbsp;standard&nbsp;Python&nbsp;behavior&nbsp;with&nbsp;files.<br>
Set&nbsp;force&nbsp;to&nbsp;True&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;make&nbsp;sure&nbsp;that&nbsp;the&nbsp;child&nbsp;is&nbsp;terminated<br>
(SIGKILL&nbsp;is&nbsp;sent&nbsp;if&nbsp;the&nbsp;child&nbsp;ignores&nbsp;SIGHUP&nbsp;and&nbsp;SIGINT).</tt></dd></dl>

<dl><dt><a name="pxssh-compile_pattern_list"><strong>compile_pattern_list</strong></a>(self, patterns)</dt><dd><tt>This&nbsp;compiles&nbsp;a&nbsp;pattern-string&nbsp;or&nbsp;a&nbsp;list&nbsp;of&nbsp;pattern-strings.<br>
Patterns&nbsp;must&nbsp;be&nbsp;a&nbsp;StringType,&nbsp;EOF,&nbsp;TIMEOUT,&nbsp;SRE_Pattern,&nbsp;or&nbsp;<br>
a&nbsp;list&nbsp;of&nbsp;those.&nbsp;Patterns&nbsp;may&nbsp;also&nbsp;be&nbsp;None&nbsp;which&nbsp;results&nbsp;in<br>
an&nbsp;empty&nbsp;list.<br>
&nbsp;<br>
This&nbsp;is&nbsp;used&nbsp;by&nbsp;<a href="#pxssh-expect">expect</a>()&nbsp;when&nbsp;calling&nbsp;<a href="#pxssh-expect_list">expect_list</a>().<br>
Thus&nbsp;<a href="#pxssh-expect">expect</a>()&nbsp;is&nbsp;nothing&nbsp;more&nbsp;than::<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpl&nbsp;=&nbsp;<a href="#pxssh-compile_pattern_list">compile_pattern_list</a>(pl)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;<a href="#pxssh-expect_list">expect_list</a>(clp,&nbsp;timeout)<br>
&nbsp;<br>
If&nbsp;you&nbsp;are&nbsp;using&nbsp;<a href="#pxssh-expect">expect</a>()&nbsp;within&nbsp;a&nbsp;loop&nbsp;it&nbsp;may&nbsp;be&nbsp;more<br>
efficient&nbsp;to&nbsp;compile&nbsp;the&nbsp;patterns&nbsp;first&nbsp;and&nbsp;then&nbsp;call&nbsp;<a href="#pxssh-expect_list">expect_list</a>().<br>
This&nbsp;avoid&nbsp;calls&nbsp;in&nbsp;a&nbsp;loop&nbsp;to&nbsp;<a href="#pxssh-compile_pattern_list">compile_pattern_list</a>():<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpl&nbsp;=&nbsp;<a href="#pxssh-compile_pattern_list">compile_pattern_list</a>(my_pattern)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;some_condition:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;<a href="#pxssh-expect_list">expect_list</a>(clp,&nbsp;timeout)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...</tt></dd></dl>

<dl><dt><a name="pxssh-eof"><strong>eof</strong></a>(self)</dt><dd><tt>This&nbsp;returns&nbsp;True&nbsp;if&nbsp;the&nbsp;EOF&nbsp;exception&nbsp;was&nbsp;ever&nbsp;raised.</tt></dd></dl>

<dl><dt><a name="pxssh-expect"><strong>expect</strong></a>(self, pattern, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=None</font>)</dt><dd><tt>This&nbsp;seeks&nbsp;through&nbsp;the&nbsp;stream&nbsp;until&nbsp;a&nbsp;pattern&nbsp;is&nbsp;matched.<br>
The&nbsp;pattern&nbsp;is&nbsp;overloaded&nbsp;and&nbsp;may&nbsp;take&nbsp;several&nbsp;types&nbsp;including&nbsp;a&nbsp;list.<br>
The&nbsp;pattern&nbsp;can&nbsp;be&nbsp;a&nbsp;StringType,&nbsp;EOF,&nbsp;a&nbsp;compiled&nbsp;re,&nbsp;or&nbsp;a&nbsp;list&nbsp;of<br>
those&nbsp;types.&nbsp;Strings&nbsp;will&nbsp;be&nbsp;compiled&nbsp;to&nbsp;re&nbsp;types.&nbsp;This&nbsp;returns&nbsp;the<br>
index&nbsp;into&nbsp;the&nbsp;pattern&nbsp;list.&nbsp;If&nbsp;the&nbsp;pattern&nbsp;was&nbsp;not&nbsp;a&nbsp;list&nbsp;this<br>
returns&nbsp;index&nbsp;0&nbsp;on&nbsp;a&nbsp;successful&nbsp;match.&nbsp;This&nbsp;may&nbsp;raise&nbsp;exceptions&nbsp;for<br>
EOF&nbsp;or&nbsp;TIMEOUT.&nbsp;To&nbsp;avoid&nbsp;the&nbsp;EOF&nbsp;or&nbsp;TIMEOUT&nbsp;exceptions&nbsp;add<br>
EOF&nbsp;or&nbsp;TIMEOUT&nbsp;to&nbsp;the&nbsp;pattern&nbsp;list.<br>
&nbsp;<br>
After&nbsp;a&nbsp;match&nbsp;is&nbsp;found&nbsp;the&nbsp;instance&nbsp;attributes<br>
'before',&nbsp;'after'&nbsp;and&nbsp;'match'&nbsp;will&nbsp;be&nbsp;set.<br>
You&nbsp;can&nbsp;see&nbsp;all&nbsp;the&nbsp;data&nbsp;read&nbsp;before&nbsp;the&nbsp;match&nbsp;in&nbsp;'before'.<br>
You&nbsp;can&nbsp;see&nbsp;the&nbsp;data&nbsp;that&nbsp;was&nbsp;matched&nbsp;in&nbsp;'after'.<br>
The&nbsp;re.MatchObject&nbsp;used&nbsp;in&nbsp;the&nbsp;re&nbsp;match&nbsp;will&nbsp;be&nbsp;in&nbsp;'match'.<br>
If&nbsp;an&nbsp;error&nbsp;occured&nbsp;then&nbsp;'before'&nbsp;will&nbsp;be&nbsp;set&nbsp;to&nbsp;all&nbsp;the<br>
data&nbsp;read&nbsp;so&nbsp;far&nbsp;and&nbsp;'after'&nbsp;and&nbsp;'match'&nbsp;will&nbsp;be&nbsp;None.<br>
&nbsp;<br>
If&nbsp;timeout&nbsp;is&nbsp;-1&nbsp;then&nbsp;timeout&nbsp;will&nbsp;be&nbsp;set&nbsp;to&nbsp;the&nbsp;self.<strong>timeout</strong>&nbsp;value.<br>
&nbsp;<br>
Note:&nbsp;A&nbsp;list&nbsp;entry&nbsp;may&nbsp;be&nbsp;EOF&nbsp;or&nbsp;TIMEOUT&nbsp;instead&nbsp;of&nbsp;a&nbsp;string.<br>
This&nbsp;will&nbsp;catch&nbsp;these&nbsp;exceptions&nbsp;and&nbsp;return&nbsp;the&nbsp;index<br>
of&nbsp;the&nbsp;list&nbsp;entry&nbsp;instead&nbsp;of&nbsp;raising&nbsp;the&nbsp;exception.<br>
The&nbsp;attribute&nbsp;'after'&nbsp;will&nbsp;be&nbsp;set&nbsp;to&nbsp;the&nbsp;exception&nbsp;type.<br>
The&nbsp;attribute&nbsp;'match'&nbsp;will&nbsp;be&nbsp;None.<br>
This&nbsp;allows&nbsp;you&nbsp;to&nbsp;write&nbsp;code&nbsp;like&nbsp;this:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;p.expect&nbsp;(['good',&nbsp;'bad',&nbsp;pexpect.EOF,&nbsp;pexpect.TIMEOUT])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;index&nbsp;==&nbsp;0:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_something()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;index&nbsp;==&nbsp;1:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_something_else()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;index&nbsp;==&nbsp;2:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_some_other_thing()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;index&nbsp;==&nbsp;3:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_something_completely_different()<br>
instead&nbsp;of&nbsp;code&nbsp;like&nbsp;this:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;p.expect&nbsp;(['good',&nbsp;'bad'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;index&nbsp;==&nbsp;0:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_something()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;index&nbsp;==&nbsp;1:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_something_else()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;except&nbsp;EOF:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_some_other_thing()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;except&nbsp;TIMEOUT:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_something_completely_different()<br>
These&nbsp;two&nbsp;forms&nbsp;are&nbsp;equivalent.&nbsp;It&nbsp;all&nbsp;depends&nbsp;on&nbsp;what&nbsp;you&nbsp;want.<br>
You&nbsp;can&nbsp;also&nbsp;just&nbsp;expect&nbsp;the&nbsp;EOF&nbsp;if&nbsp;you&nbsp;are&nbsp;waiting&nbsp;for&nbsp;all&nbsp;output<br>
of&nbsp;a&nbsp;child&nbsp;to&nbsp;finish.&nbsp;For&nbsp;example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;pexpect.<a href="pexpect.html#spawn">spawn</a>('/bin/ls')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(pexpect.EOF)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;p.before<br>
&nbsp;<br>
If&nbsp;you&nbsp;are&nbsp;trying&nbsp;to&nbsp;optimize&nbsp;for&nbsp;speed&nbsp;then&nbsp;see&nbsp;<a href="#pxssh-expect_list">expect_list</a>().</tt></dd></dl>

<dl><dt><a name="pxssh-expect_exact"><strong>expect_exact</strong></a>(self, pattern_list, timeout<font color="#909090">=-1</font>)</dt><dd><tt>This&nbsp;method&nbsp;is&nbsp;no&nbsp;longer&nbsp;supported&nbsp;or&nbsp;allowed.<br>
It&nbsp;was&nbsp;too&nbsp;hard&nbsp;to&nbsp;maintain&nbsp;and&nbsp;keep&nbsp;it&nbsp;up&nbsp;to&nbsp;date&nbsp;with&nbsp;expect_list.<br>
Few&nbsp;people&nbsp;used&nbsp;this&nbsp;method.&nbsp;Most&nbsp;people&nbsp;favored&nbsp;reliability&nbsp;over&nbsp;speed.<br>
The&nbsp;implementation&nbsp;is&nbsp;left&nbsp;in&nbsp;comments&nbsp;in&nbsp;case&nbsp;anyone&nbsp;needs&nbsp;to&nbsp;hack&nbsp;this<br>
feature&nbsp;back&nbsp;into&nbsp;their&nbsp;copy.<br>
If&nbsp;someone&nbsp;wants&nbsp;to&nbsp;diff&nbsp;this&nbsp;with&nbsp;expect_list&nbsp;and&nbsp;make&nbsp;them&nbsp;work<br>
nearly&nbsp;the&nbsp;same&nbsp;then&nbsp;I&nbsp;will&nbsp;consider&nbsp;adding&nbsp;this&nbsp;make&nbsp;in.</tt></dd></dl>

<dl><dt><a name="pxssh-expect_list"><strong>expect_list</strong></a>(self, pattern_list, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=-1</font>)</dt><dd><tt>This&nbsp;takes&nbsp;a&nbsp;list&nbsp;of&nbsp;compiled&nbsp;regular&nbsp;expressions&nbsp;and&nbsp;returns&nbsp;<br>
the&nbsp;index&nbsp;into&nbsp;the&nbsp;pattern_list&nbsp;that&nbsp;matched&nbsp;the&nbsp;child&nbsp;output.<br>
The&nbsp;list&nbsp;may&nbsp;also&nbsp;contain&nbsp;EOF&nbsp;or&nbsp;TIMEOUT&nbsp;(which&nbsp;are&nbsp;not<br>
compiled&nbsp;regular&nbsp;expressions).&nbsp;This&nbsp;method&nbsp;is&nbsp;similar&nbsp;to<br>
the&nbsp;<a href="#pxssh-expect">expect</a>()&nbsp;method&nbsp;except&nbsp;that&nbsp;<a href="#pxssh-expect_list">expect_list</a>()&nbsp;does&nbsp;not<br>
recompile&nbsp;the&nbsp;pattern&nbsp;list&nbsp;on&nbsp;every&nbsp;call.<br>
This&nbsp;may&nbsp;help&nbsp;if&nbsp;you&nbsp;are&nbsp;trying&nbsp;to&nbsp;optimize&nbsp;for&nbsp;speed,&nbsp;otherwise<br>
just&nbsp;use&nbsp;the&nbsp;<a href="#pxssh-expect">expect</a>()&nbsp;method.&nbsp;&nbsp;This&nbsp;is&nbsp;called&nbsp;by&nbsp;<a href="#pxssh-expect">expect</a>().<br>
If&nbsp;timeout==-1&nbsp;then&nbsp;the&nbsp;self.<strong>timeout</strong>&nbsp;value&nbsp;is&nbsp;used.<br>
If&nbsp;searchwindowsize==-1&nbsp;then&nbsp;the&nbsp;self.<strong>searchwindowsize</strong>&nbsp;value&nbsp;is&nbsp;used.</tt></dd></dl>

<dl><dt><a name="pxssh-fileno"><strong>fileno</strong></a>(self)</dt><dd><tt>This&nbsp;returns&nbsp;the&nbsp;file&nbsp;descriptor&nbsp;of&nbsp;the&nbsp;pty&nbsp;for&nbsp;the&nbsp;child.</tt></dd></dl>

<dl><dt><a name="pxssh-flush"><strong>flush</strong></a>(self)</dt><dd><tt>This&nbsp;does&nbsp;nothing.&nbsp;It&nbsp;is&nbsp;here&nbsp;to&nbsp;support&nbsp;the&nbsp;interface&nbsp;for&nbsp;a&nbsp;File-like&nbsp;object.</tt></dd></dl>

<dl><dt><a name="pxssh-getwinsize"><strong>getwinsize</strong></a>(self)</dt><dd><tt>This&nbsp;returns&nbsp;the&nbsp;terminal&nbsp;window&nbsp;size&nbsp;of&nbsp;the&nbsp;child&nbsp;tty.<br>
The&nbsp;return&nbsp;value&nbsp;is&nbsp;a&nbsp;tuple&nbsp;of&nbsp;(rows,&nbsp;cols).</tt></dd></dl>

<dl><dt><a name="pxssh-interact"><strong>interact</strong></a>(self, escape_character<font color="#909090">='<font color="#c040c0">\x1d</font>'</font>, input_filter<font color="#909090">=None</font>, output_filter<font color="#909090">=None</font>)</dt><dd><tt>This&nbsp;gives&nbsp;control&nbsp;of&nbsp;the&nbsp;child&nbsp;process&nbsp;to&nbsp;the&nbsp;interactive&nbsp;user<br>
(the&nbsp;human&nbsp;at&nbsp;the&nbsp;keyboard).<br>
Keystrokes&nbsp;are&nbsp;sent&nbsp;to&nbsp;the&nbsp;child&nbsp;process,&nbsp;and&nbsp;the&nbsp;stdout&nbsp;and&nbsp;stderr<br>
output&nbsp;of&nbsp;the&nbsp;child&nbsp;process&nbsp;is&nbsp;printed.<br>
This&nbsp;simply&nbsp;echos&nbsp;the&nbsp;child&nbsp;stdout&nbsp;and&nbsp;child&nbsp;stderr&nbsp;to&nbsp;the&nbsp;real<br>
stdout&nbsp;and&nbsp;it&nbsp;echos&nbsp;the&nbsp;real&nbsp;stdin&nbsp;to&nbsp;the&nbsp;child&nbsp;stdin.<br>
When&nbsp;the&nbsp;user&nbsp;types&nbsp;the&nbsp;escape_character&nbsp;this&nbsp;method&nbsp;will&nbsp;stop.<br>
The&nbsp;default&nbsp;for&nbsp;escape_character&nbsp;is&nbsp;^].&nbsp;This&nbsp;should&nbsp;not&nbsp;be&nbsp;confused<br>
with&nbsp;ASCII&nbsp;27&nbsp;--&nbsp;the&nbsp;ESC&nbsp;character.&nbsp;ASCII&nbsp;29&nbsp;was&nbsp;chosen<br>
for&nbsp;historical&nbsp;merit&nbsp;because&nbsp;this&nbsp;is&nbsp;the&nbsp;character&nbsp;used<br>
by&nbsp;'telnet'&nbsp;as&nbsp;the&nbsp;escape&nbsp;character.&nbsp;The&nbsp;escape_character&nbsp;will<br>
not&nbsp;be&nbsp;sent&nbsp;to&nbsp;the&nbsp;child&nbsp;process.<br>
&nbsp;<br>
You&nbsp;may&nbsp;pass&nbsp;in&nbsp;optional&nbsp;input&nbsp;and&nbsp;output&nbsp;filter&nbsp;functions.<br>
These&nbsp;functions&nbsp;should&nbsp;take&nbsp;a&nbsp;string&nbsp;and&nbsp;return&nbsp;a&nbsp;string.<br>
The&nbsp;output_filter&nbsp;will&nbsp;be&nbsp;passed&nbsp;all&nbsp;the&nbsp;output&nbsp;from&nbsp;the&nbsp;child&nbsp;process.<br>
The&nbsp;input_filter&nbsp;will&nbsp;be&nbsp;passed&nbsp;all&nbsp;the&nbsp;keyboard&nbsp;input&nbsp;from&nbsp;the&nbsp;user.<br>
The&nbsp;input_filter&nbsp;is&nbsp;run&nbsp;BEFORE&nbsp;the&nbsp;check&nbsp;for&nbsp;the&nbsp;escape_character.<br>
&nbsp;<br>
Note&nbsp;that&nbsp;if&nbsp;you&nbsp;change&nbsp;the&nbsp;window&nbsp;size&nbsp;of&nbsp;the&nbsp;parent<br>
the&nbsp;SIGWINCH&nbsp;signal&nbsp;will&nbsp;not&nbsp;be&nbsp;passed&nbsp;through&nbsp;to&nbsp;the&nbsp;child.<br>
If&nbsp;you&nbsp;want&nbsp;the&nbsp;child&nbsp;window&nbsp;size&nbsp;to&nbsp;change&nbsp;when&nbsp;the&nbsp;parent's<br>
window&nbsp;size&nbsp;changes&nbsp;then&nbsp;do&nbsp;something&nbsp;like&nbsp;the&nbsp;following&nbsp;example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;pexpect,&nbsp;struct,&nbsp;fcntl,&nbsp;termios,&nbsp;signal,&nbsp;sys<br>
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;sigwinch_passthrough&nbsp;(sig,&nbsp;data):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;struct.pack("HHHH",&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;struct.unpack('hhhh',&nbsp;fcntl.ioctl(sys.stdout.<a href="#pxssh-fileno">fileno</a>(),&nbsp;termios.TIOCGWINSZ&nbsp;,&nbsp;s))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;p<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.<a href="#pxssh-setwinsize">setwinsize</a>(a[0],a[1])<br>
&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;pexpect.<a href="pexpect.html#spawn">spawn</a>('/bin/bash')&nbsp;#&nbsp;Note&nbsp;this&nbsp;is&nbsp;global&nbsp;and&nbsp;used&nbsp;in&nbsp;sigwinch_passthrough.<br>
&nbsp;&nbsp;&nbsp;&nbsp;signal.signal(signal.SIGWINCH,&nbsp;sigwinch_passthrough)<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.<a href="#pxssh-interact">interact</a>()</tt></dd></dl>

<dl><dt><a name="pxssh-isalive"><strong>isalive</strong></a>(self)</dt><dd><tt>This&nbsp;tests&nbsp;if&nbsp;the&nbsp;child&nbsp;process&nbsp;is&nbsp;running&nbsp;or&nbsp;not.<br>
This&nbsp;is&nbsp;non-blocking.&nbsp;If&nbsp;the&nbsp;child&nbsp;was&nbsp;terminated&nbsp;then&nbsp;this<br>
will&nbsp;read&nbsp;the&nbsp;exitstatus&nbsp;or&nbsp;signalstatus&nbsp;of&nbsp;the&nbsp;child.<br>
This&nbsp;returns&nbsp;True&nbsp;if&nbsp;the&nbsp;child&nbsp;process&nbsp;appears&nbsp;to&nbsp;be&nbsp;running&nbsp;or&nbsp;False&nbsp;if&nbsp;not.<br>
It&nbsp;can&nbsp;take&nbsp;literally&nbsp;SECONDS&nbsp;for&nbsp;Solaris&nbsp;to&nbsp;return&nbsp;the&nbsp;right&nbsp;status.</tt></dd></dl>

<dl><dt><a name="pxssh-isatty"><strong>isatty</strong></a>(self)</dt><dd><tt>This&nbsp;returns&nbsp;True&nbsp;if&nbsp;the&nbsp;file&nbsp;descriptor&nbsp;is&nbsp;open&nbsp;and&nbsp;connected&nbsp;to&nbsp;a&nbsp;tty(-like)&nbsp;device,&nbsp;else&nbsp;False.</tt></dd></dl>

<dl><dt><a name="pxssh-kill"><strong>kill</strong></a>(self, sig)</dt><dd><tt>This&nbsp;sends&nbsp;the&nbsp;given&nbsp;signal&nbsp;to&nbsp;the&nbsp;child&nbsp;application.<br>
In&nbsp;keeping&nbsp;with&nbsp;UNIX&nbsp;tradition&nbsp;it&nbsp;has&nbsp;a&nbsp;misleading&nbsp;name.<br>
It&nbsp;does&nbsp;not&nbsp;necessarily&nbsp;kill&nbsp;the&nbsp;child&nbsp;unless<br>
you&nbsp;send&nbsp;the&nbsp;right&nbsp;signal.</tt></dd></dl>

<dl><dt><a name="pxssh-next"><strong>next</strong></a>(self)</dt><dd><tt>This&nbsp;is&nbsp;to&nbsp;support&nbsp;iterators&nbsp;over&nbsp;a&nbsp;file-like&nbsp;object.</tt></dd></dl>

<dl><dt><a name="pxssh-read"><strong>read</strong></a>(self, size<font color="#909090">=-1</font>)</dt><dd><tt>This&nbsp;reads&nbsp;at&nbsp;most&nbsp;"size"&nbsp;bytes&nbsp;from&nbsp;the&nbsp;file&nbsp;<br>
(less&nbsp;if&nbsp;the&nbsp;read&nbsp;hits&nbsp;EOF&nbsp;before&nbsp;obtaining&nbsp;size&nbsp;bytes).&nbsp;<br>
If&nbsp;the&nbsp;size&nbsp;argument&nbsp;is&nbsp;negative&nbsp;or&nbsp;omitted,&nbsp;<br>
read&nbsp;all&nbsp;data&nbsp;until&nbsp;EOF&nbsp;is&nbsp;reached.&nbsp;<br>
The&nbsp;bytes&nbsp;are&nbsp;returned&nbsp;as&nbsp;a&nbsp;string&nbsp;object.&nbsp;<br>
An&nbsp;empty&nbsp;string&nbsp;is&nbsp;returned&nbsp;when&nbsp;EOF&nbsp;is&nbsp;encountered&nbsp;immediately.</tt></dd></dl>

<dl><dt><a name="pxssh-read_nonblocking"><strong>read_nonblocking</strong></a>(self, size<font color="#909090">=1</font>, timeout<font color="#909090">=-1</font>)</dt><dd><tt>This&nbsp;reads&nbsp;at&nbsp;most&nbsp;size&nbsp;characters&nbsp;from&nbsp;the&nbsp;child&nbsp;application.<br>
It&nbsp;includes&nbsp;a&nbsp;timeout.&nbsp;If&nbsp;the&nbsp;read&nbsp;does&nbsp;not&nbsp;complete&nbsp;within&nbsp;the<br>
timeout&nbsp;period&nbsp;then&nbsp;a&nbsp;TIMEOUT&nbsp;exception&nbsp;is&nbsp;raised.<br>
If&nbsp;the&nbsp;end&nbsp;of&nbsp;file&nbsp;is&nbsp;read&nbsp;then&nbsp;an&nbsp;EOF&nbsp;exception&nbsp;will&nbsp;be&nbsp;raised.<br>
If&nbsp;a&nbsp;log&nbsp;file&nbsp;was&nbsp;set&nbsp;using&nbsp;<a href="#pxssh-setlog">setlog</a>()&nbsp;then&nbsp;all&nbsp;data&nbsp;will<br>
also&nbsp;be&nbsp;written&nbsp;to&nbsp;the&nbsp;log&nbsp;file.<br>
&nbsp;<br>
If&nbsp;timeout==None&nbsp;then&nbsp;the&nbsp;read&nbsp;may&nbsp;block&nbsp;indefinitely.<br>
If&nbsp;timeout==-1&nbsp;then&nbsp;the&nbsp;self.<strong>timeout</strong>&nbsp;value&nbsp;is&nbsp;used.<br>
If&nbsp;timeout==0&nbsp;then&nbsp;the&nbsp;child&nbsp;is&nbsp;polled&nbsp;and&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;there&nbsp;was&nbsp;no&nbsp;data&nbsp;immediately&nbsp;ready&nbsp;then&nbsp;this&nbsp;will&nbsp;raise&nbsp;a&nbsp;TIMEOUT&nbsp;exception.<br>
&nbsp;<br>
The&nbsp;"timeout"&nbsp;refers&nbsp;only&nbsp;to&nbsp;the&nbsp;amount&nbsp;of&nbsp;time&nbsp;to&nbsp;read&nbsp;at&nbsp;least&nbsp;one&nbsp;character.<br>
This&nbsp;is&nbsp;not&nbsp;effected&nbsp;by&nbsp;the&nbsp;'size'&nbsp;parameter,&nbsp;so&nbsp;if&nbsp;you&nbsp;call<br>
<a href="#pxssh-read_nonblocking">read_nonblocking</a>(size=100,&nbsp;timeout=30)&nbsp;and&nbsp;only&nbsp;one&nbsp;character&nbsp;is<br>
available&nbsp;right&nbsp;away&nbsp;then&nbsp;one&nbsp;character&nbsp;will&nbsp;be&nbsp;returned&nbsp;immediately.&nbsp;<br>
It&nbsp;will&nbsp;not&nbsp;wait&nbsp;for&nbsp;30&nbsp;seconds&nbsp;for&nbsp;another&nbsp;99&nbsp;characters&nbsp;to&nbsp;come&nbsp;in.<br>
&nbsp;<br>
This&nbsp;is&nbsp;a&nbsp;wrapper&nbsp;around&nbsp;os.<a href="#pxssh-read">read</a>().<br>
It&nbsp;uses&nbsp;select.select()&nbsp;to&nbsp;implement&nbsp;a&nbsp;timeout.</tt></dd></dl>

<dl><dt><a name="pxssh-readline"><strong>readline</strong></a>(self, size<font color="#909090">=-1</font>)</dt><dd><tt>This&nbsp;reads&nbsp;and&nbsp;returns&nbsp;one&nbsp;entire&nbsp;line.&nbsp;A&nbsp;trailing&nbsp;newline&nbsp;is&nbsp;kept&nbsp;in<br>
the&nbsp;string,&nbsp;but&nbsp;may&nbsp;be&nbsp;absent&nbsp;when&nbsp;a&nbsp;file&nbsp;ends&nbsp;with&nbsp;an&nbsp;incomplete&nbsp;line.&nbsp;<br>
Note:&nbsp;This&nbsp;<a href="#pxssh-readline">readline</a>()&nbsp;looks&nbsp;for&nbsp;a&nbsp;\r\n&nbsp;pair&nbsp;even&nbsp;on&nbsp;UNIX&nbsp;because<br>
this&nbsp;is&nbsp;what&nbsp;the&nbsp;pseudo&nbsp;tty&nbsp;device&nbsp;returns.&nbsp;So&nbsp;contrary&nbsp;to&nbsp;what&nbsp;you<br>
may&nbsp;expect&nbsp;you&nbsp;will&nbsp;receive&nbsp;the&nbsp;newline&nbsp;as&nbsp;\r\n.<br>
An&nbsp;empty&nbsp;string&nbsp;is&nbsp;returned&nbsp;when&nbsp;EOF&nbsp;is&nbsp;hit&nbsp;immediately.<br>
Currently,&nbsp;the&nbsp;size&nbsp;agument&nbsp;is&nbsp;mostly&nbsp;ignored,&nbsp;so&nbsp;this&nbsp;behavior&nbsp;is&nbsp;not<br>
standard&nbsp;for&nbsp;a&nbsp;file-like&nbsp;object.&nbsp;If&nbsp;size&nbsp;is&nbsp;0&nbsp;then&nbsp;an&nbsp;empty&nbsp;string<br>
is&nbsp;returned.</tt></dd></dl>

<dl><dt><a name="pxssh-readlines"><strong>readlines</strong></a>(self, sizehint<font color="#909090">=-1</font>)</dt><dd><tt>This&nbsp;reads&nbsp;until&nbsp;EOF&nbsp;using&nbsp;<a href="#pxssh-readline">readline</a>()&nbsp;and&nbsp;returns&nbsp;a&nbsp;list&nbsp;containing&nbsp;<br>
the&nbsp;lines&nbsp;thus&nbsp;read.&nbsp;The&nbsp;optional&nbsp;"sizehint"&nbsp;argument&nbsp;is&nbsp;ignored.</tt></dd></dl>

<dl><dt><a name="pxssh-send"><strong>send</strong></a>(self, str)</dt><dd><tt>This&nbsp;sends&nbsp;a&nbsp;string&nbsp;to&nbsp;the&nbsp;child&nbsp;process.<br>
This&nbsp;returns&nbsp;the&nbsp;number&nbsp;of&nbsp;bytes&nbsp;written.<br>
If&nbsp;a&nbsp;log&nbsp;file&nbsp;was&nbsp;set&nbsp;then&nbsp;the&nbsp;data&nbsp;is&nbsp;also&nbsp;written&nbsp;to&nbsp;the&nbsp;log.</tt></dd></dl>

<dl><dt><a name="pxssh-sendeof"><strong>sendeof</strong></a>(self)</dt><dd><tt>This&nbsp;sends&nbsp;an&nbsp;EOF&nbsp;to&nbsp;the&nbsp;child.<br>
This&nbsp;sends&nbsp;a&nbsp;character&nbsp;which&nbsp;causes&nbsp;the&nbsp;pending&nbsp;parent&nbsp;output<br>
buffer&nbsp;to&nbsp;be&nbsp;sent&nbsp;to&nbsp;the&nbsp;waiting&nbsp;child&nbsp;program&nbsp;without<br>
waiting&nbsp;for&nbsp;end-of-line.&nbsp;If&nbsp;it&nbsp;is&nbsp;the&nbsp;first&nbsp;character&nbsp;of&nbsp;the<br>
line,&nbsp;the&nbsp;<a href="#pxssh-read">read</a>()&nbsp;in&nbsp;the&nbsp;user&nbsp;program&nbsp;returns&nbsp;0,&nbsp;which<br>
signifies&nbsp;end-of-file.&nbsp;This&nbsp;means&nbsp;to&nbsp;work&nbsp;as&nbsp;expected&nbsp;<br>
a&nbsp;<a href="#pxssh-sendeof">sendeof</a>()&nbsp;has&nbsp;to&nbsp;be&nbsp;called&nbsp;at&nbsp;the&nbsp;begining&nbsp;of&nbsp;a&nbsp;line.&nbsp;<br>
This&nbsp;method&nbsp;does&nbsp;not&nbsp;send&nbsp;a&nbsp;newline.&nbsp;It&nbsp;is&nbsp;the&nbsp;responsibility<br>
of&nbsp;the&nbsp;caller&nbsp;to&nbsp;ensure&nbsp;the&nbsp;eof&nbsp;is&nbsp;sent&nbsp;at&nbsp;the&nbsp;beginning&nbsp;of&nbsp;a&nbsp;line.</tt></dd></dl>

<dl><dt><a name="pxssh-sendline"><strong>sendline</strong></a>(self, str<font color="#909090">=''</font>)</dt><dd><tt>This&nbsp;is&nbsp;like&nbsp;<a href="#pxssh-send">send</a>(),&nbsp;but&nbsp;it&nbsp;adds&nbsp;a&nbsp;line&nbsp;feed&nbsp;(os.linesep).<br>
This&nbsp;returns&nbsp;the&nbsp;number&nbsp;of&nbsp;bytes&nbsp;written.</tt></dd></dl>

<dl><dt><a name="pxssh-setecho"><strong>setecho</strong></a>(self, state)</dt><dd><tt>This&nbsp;sets&nbsp;the&nbsp;terminal&nbsp;echo&nbsp;mode&nbsp;on&nbsp;or&nbsp;off.<br>
Note&nbsp;that&nbsp;anything&nbsp;the&nbsp;child&nbsp;sent&nbsp;before&nbsp;the&nbsp;echo&nbsp;will&nbsp;be&nbsp;lost,&nbsp;so<br>
you&nbsp;should&nbsp;be&nbsp;sure&nbsp;that&nbsp;your&nbsp;input&nbsp;buffer&nbsp;is&nbsp;empty&nbsp;before&nbsp;you&nbsp;setecho.<br>
For&nbsp;example,&nbsp;the&nbsp;following&nbsp;will&nbsp;work&nbsp;as&nbsp;expected.<br>
&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;pexpect.<a href="pexpect.html#spawn">spawn</a>('cat')<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.sendline&nbsp;('1234')&nbsp;#&nbsp;We&nbsp;will&nbsp;see&nbsp;this&nbsp;twice&nbsp;(once&nbsp;from&nbsp;tty&nbsp;echo&nbsp;and&nbsp;again&nbsp;from&nbsp;cat).<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(['1234'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(['1234'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.<a href="#pxssh-setecho">setecho</a>(False)&nbsp;#&nbsp;Turn&nbsp;off&nbsp;tty&nbsp;echo<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.sendline&nbsp;('abcd')&nbsp;#&nbsp;We&nbsp;will&nbsp;set&nbsp;this&nbsp;only&nbsp;once&nbsp;(echoed&nbsp;by&nbsp;cat).<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.sendline&nbsp;('wxyz')&nbsp;#&nbsp;We&nbsp;will&nbsp;set&nbsp;this&nbsp;only&nbsp;once&nbsp;(echoed&nbsp;by&nbsp;cat)<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(['abcd'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(['wxyz'])<br>
The&nbsp;following&nbsp;WILL&nbsp;NOT&nbsp;WORK&nbsp;because&nbsp;the&nbsp;lines&nbsp;sent&nbsp;before&nbsp;the&nbsp;setecho<br>
will&nbsp;be&nbsp;lost:<br>
&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;pexpect.<a href="pexpect.html#spawn">spawn</a>('cat')<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.sendline&nbsp;('1234')&nbsp;#&nbsp;We&nbsp;will&nbsp;see&nbsp;this&nbsp;twice&nbsp;(once&nbsp;from&nbsp;tty&nbsp;echo&nbsp;and&nbsp;again&nbsp;from&nbsp;cat).<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.<a href="#pxssh-setecho">setecho</a>(False)&nbsp;#&nbsp;Turn&nbsp;off&nbsp;tty&nbsp;echo<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.sendline&nbsp;('abcd')&nbsp;#&nbsp;We&nbsp;will&nbsp;set&nbsp;this&nbsp;only&nbsp;once&nbsp;(echoed&nbsp;by&nbsp;cat).<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.sendline&nbsp;('wxyz')&nbsp;#&nbsp;We&nbsp;will&nbsp;set&nbsp;this&nbsp;only&nbsp;once&nbsp;(echoed&nbsp;by&nbsp;cat)<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(['1234'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(['1234'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(['abcd'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;p.expect&nbsp;(['wxyz'])</tt></dd></dl>

<dl><dt><a name="pxssh-setlog"><strong>setlog</strong></a>(self, fileobject)</dt><dd><tt>This&nbsp;method&nbsp;is&nbsp;no&nbsp;longer&nbsp;supported&nbsp;or&nbsp;allowed.</tt></dd></dl>

<dl><dt><a name="pxssh-setmaxread"><strong>setmaxread</strong></a>(self, maxread)</dt><dd><tt>This&nbsp;method&nbsp;is&nbsp;no&nbsp;longer&nbsp;supported&nbsp;or&nbsp;allowed.<br>
I&nbsp;don't&nbsp;like&nbsp;getters&nbsp;and&nbsp;setters&nbsp;without&nbsp;a&nbsp;good&nbsp;reason.</tt></dd></dl>

<dl><dt><a name="pxssh-setwinsize"><strong>setwinsize</strong></a>(self, r, c)</dt><dd><tt>This&nbsp;sets&nbsp;the&nbsp;terminal&nbsp;window&nbsp;size&nbsp;of&nbsp;the&nbsp;child&nbsp;tty.<br>
This&nbsp;will&nbsp;cause&nbsp;a&nbsp;SIGWINCH&nbsp;signal&nbsp;to&nbsp;be&nbsp;sent&nbsp;to&nbsp;the&nbsp;child.<br>
This&nbsp;does&nbsp;not&nbsp;change&nbsp;the&nbsp;physical&nbsp;window&nbsp;size.<br>
It&nbsp;changes&nbsp;the&nbsp;size&nbsp;reported&nbsp;to&nbsp;TTY-aware&nbsp;applications&nbsp;like<br>
vi&nbsp;or&nbsp;curses&nbsp;--&nbsp;applications&nbsp;that&nbsp;respond&nbsp;to&nbsp;the&nbsp;SIGWINCH&nbsp;signal.</tt></dd></dl>

<dl><dt><a name="pxssh-terminate"><strong>terminate</strong></a>(self, force<font color="#909090">=False</font>)</dt><dd><tt>This&nbsp;forces&nbsp;a&nbsp;child&nbsp;process&nbsp;to&nbsp;terminate.<br>
It&nbsp;starts&nbsp;nicely&nbsp;with&nbsp;SIGHUP&nbsp;and&nbsp;SIGINT.&nbsp;If&nbsp;"force"&nbsp;is&nbsp;True&nbsp;then<br>
moves&nbsp;onto&nbsp;SIGKILL.<br>
This&nbsp;returns&nbsp;True&nbsp;if&nbsp;the&nbsp;child&nbsp;was&nbsp;terminated.<br>
This&nbsp;returns&nbsp;False&nbsp;if&nbsp;the&nbsp;child&nbsp;could&nbsp;not&nbsp;be&nbsp;terminated.</tt></dd></dl>

<dl><dt><a name="pxssh-wait"><strong>wait</strong></a>(self)</dt><dd><tt>This&nbsp;waits&nbsp;until&nbsp;the&nbsp;child&nbsp;exits.&nbsp;This&nbsp;is&nbsp;a&nbsp;blocking&nbsp;call.<br>
This&nbsp;will&nbsp;not&nbsp;read&nbsp;any&nbsp;data&nbsp;from&nbsp;the&nbsp;child,&nbsp;so&nbsp;this&nbsp;will&nbsp;block&nbsp;forever<br>
if&nbsp;the&nbsp;child&nbsp;has&nbsp;unread&nbsp;output&nbsp;and&nbsp;has&nbsp;terminated.&nbsp;In&nbsp;other&nbsp;words,&nbsp;the&nbsp;child<br>
may&nbsp;have&nbsp;printed&nbsp;output&nbsp;then&nbsp;called&nbsp;exit();&nbsp;but,&nbsp;technically,&nbsp;the&nbsp;child&nbsp;is<br>
still&nbsp;alive&nbsp;until&nbsp;its&nbsp;output&nbsp;is&nbsp;read.</tt></dd></dl>

<dl><dt><a name="pxssh-write"><strong>write</strong></a>(self, str)</dt><dd><tt>This&nbsp;is&nbsp;similar&nbsp;to&nbsp;<a href="#pxssh-send">send</a>()&nbsp;except&nbsp;that&nbsp;there&nbsp;is&nbsp;no&nbsp;return&nbsp;value.</tt></dd></dl>

<dl><dt><a name="pxssh-writelines"><strong>writelines</strong></a>(self, sequence)</dt><dd><tt>This&nbsp;calls&nbsp;<a href="#pxssh-write">write</a>()&nbsp;for&nbsp;each&nbsp;element&nbsp;in&nbsp;the&nbsp;sequence.<br>
The&nbsp;sequence&nbsp;can&nbsp;be&nbsp;any&nbsp;iterable&nbsp;object&nbsp;producing&nbsp;strings,&nbsp;<br>
typically&nbsp;a&nbsp;list&nbsp;of&nbsp;strings.&nbsp;This&nbsp;does&nbsp;not&nbsp;add&nbsp;line&nbsp;separators<br>
There&nbsp;is&nbsp;no&nbsp;return&nbsp;value.</tt></dd></dl>

<hr>
Data and other attributes inherited from <a href="pexpect.html#spawn">pexpect.spawn</a>:<br>
<dl><dt><strong>__dict__</strong> = &lt;dictproxy object&gt;<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dl>

<dl><dt><strong>__weakref__</strong> = &lt;attribute '__weakref__' of 'spawn' objects&gt;<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dl>

</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
    
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>__revision__</strong> = '$Revision: 395 $'<br>
<strong>__version__</strong> = '2.1'</td></tr></table>
</body></html>