-
-<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module pexpect</title>
-</head><body bgcolor="#f0f0f8">
-
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong>pexpect</strong></big></big> (version 2.3)</font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/noah/pexpect/trunk/pexpect/pexpect.py">/home/noah/pexpect/trunk/pexpect/pexpect.py</a></font></td></tr></table>
- <p><tt>Pexpect is a Python module for spawning child applications and controlling<br>
-them automatically. Pexpect can be used for automating interactive applications<br>
-such as ssh, ftp, passwd, telnet, etc. It can be used to a automate setup<br>
-scripts for duplicating software package installations on different servers. It<br>
-can be used for automated software testing. Pexpect is in the spirit of Don<br>
-Libes' Expect, but Pexpect is pure Python. Other Expect-like modules for Python<br>
-require TCL and Expect or require C extensions to be compiled. Pexpect does not<br>
-use C, Expect, or TCL extensions. It should work on any platform that supports<br>
-the standard Python pty module. The Pexpect interface focuses on ease of use so<br>
-that simple tasks are easy.<br>
- <br>
-There are two main interfaces to Pexpect -- the function, <a href="#-run">run</a>() and the class,<br>
-<a href="#spawn">spawn</a>. You can call the <a href="#-run">run</a>() function to execute a command and return the<br>
-output. This is a handy replacement for os.system().<br>
- <br>
-For example::<br>
- <br>
- pexpect.<a href="#-run">run</a>('ls -la')<br>
- <br>
-The more powerful interface is the <a href="#spawn">spawn</a> class. You can use this to <a href="#spawn">spawn</a> an<br>
-external child command and then interact with the child by sending lines and<br>
-expecting responses.<br>
- <br>
-For example::<br>
- <br>
- child = pexpect.<a href="#spawn">spawn</a>('scp foo
[email protected]:.')<br>
- child.expect ('Password:')<br>
- child.sendline (mypassword)<br>
- <br>
-This works even for commands that ask for passwords or other input outside of<br>
-the normal stdio streams.<br>
- <br>
-Credits: Noah Spurrier, Richard Holden, Marco Molteni, Kimberley Burchett,<br>
-Robert Stone, Hartmut Goebel, Chad Schroeder, Erick Tryzelaar, Dave Kirby, Ids<br>
-vander Molen, George Todd, Noel Taylor, Nicolas D. Cesar, Alexander Gattin,<br>
-Geoffrey Marshall, Francisco Lourenco, Glen Mabey, Karthik Gurusamy, Fernando<br>
-Perez, Corey Minyard, Jon Cohen, Guillaume Chazarain, Andrew Ryan, Nick<br>
-Craig-Wood, Andrew Stone, Jorgen Grahn (Let me know if I forgot anyone.)<br>
- <br>
-Free, open source, and all that good stuff.<br>
- <br>
-Permission is hereby granted, free of charge, to any person obtaining a copy of<br>
-this software and associated documentation files (the "Software"), to deal in<br>
-the Software without restriction, including without limitation the rights to<br>
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies<br>
-of the Software, and to permit persons to whom the Software is furnished to do<br>
-so, subject to the following conditions:<br>
- <br>
-The above copyright notice and this permission notice shall be included in all<br>
-copies or substantial portions of the Software.<br>
- <br>
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR<br>
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br>
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE<br>
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER<br>
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,<br>
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE<br>
-SOFTWARE.<br>
- <br>
-Pexpect Copyright (c) 2008 Noah Spurrier<br>
-<a href="http://pexpect.sourceforge.net/">http://pexpect.sourceforge.net/</a><br>
- <br>
-$Id: pexpect.py 507 2007-12-27 02:40:52Z noah $</tt></p>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#aa55cc">
-<td colspan=3 valign=bottom> <br>
-<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-
-<tr><td bgcolor="#aa55cc"><tt> </tt></td><td> </td>
-<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="errno.html">errno</a><br>
-<a href="fcntl.html">fcntl</a><br>
-<a href="os.html">os</a><br>
-<a href="pty.html">pty</a><br>
-</td><td width="25%" valign=top><a href="re.html">re</a><br>
-<a href="resource.html">resource</a><br>
-<a href="select.html">select</a><br>
-<a href="signal.html">signal</a><br>
-</td><td width="25%" valign=top><a href="string.html">string</a><br>
-<a href="struct.html">struct</a><br>
-<a href="sys.html">sys</a><br>
-<a href="termios.html">termios</a><br>
-</td><td width="25%" valign=top><a href="time.html">time</a><br>
-<a href="traceback.html">traceback</a><br>
-<a href="tty.html">tty</a><br>
-<a href="types.html">types</a><br>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-
-<tr><td bgcolor="#ee77aa"><tt> </tt></td><td> </td>
-<td width="100%"><dl>
-<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="pexpect.html#spawn">spawn</a>
-</font></dt></dl>
-</dd>
-<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>(<a href="exceptions.html#BaseException">exceptions.BaseException</a>)
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="pexpect.html#EOF">EOF</a>
-</font></dt><dt><font face="helvetica, arial"><a href="pexpect.html#TIMEOUT">TIMEOUT</a>
-</font></dt></dl>
-</dd>
-</dl>
-</dd>
-</dl>
- <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom> <br>
-<font color="#000000" face="helvetica, arial"><a name="EOF">class <strong>EOF</strong></a>(<a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a>)</font></td></tr>
-
-<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt>Raised when <a href="#EOF">EOF</a> is read from a child. This usually means the child has exited.<br> </tt></td></tr>
-<tr><td> </td>
-<td width="100%"><dl><dt>Method resolution order:</dt>
-<dd><a href="pexpect.html#EOF">EOF</a></dd>
-<dd><a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a></dd>
-<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
-<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
-<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
-</dl>
-<hr>
-Methods inherited from <a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a>:<br>
-<dl><dt><a name="EOF-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
-
-<dl><dt><a name="EOF-__str__"><strong>__str__</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="EOF-get_trace"><strong>get_trace</strong></a>(self)</dt><dd><tt>This returns an abbreviated stack trace with lines that only concern<br>
-the caller. In other words, the stack trace inside the Pexpect module<br>
-is not included.</tt></dd></dl>
-
-<hr>
-Data descriptors inherited from <a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a>:<br>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list of weak references to the object (if defined)</tt></dd>
-</dl>
-<hr>
-Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
-<dl><dt><strong>__new__</strong> = <built-in method __new__ of type object at 0x81400e0><dd><tt>T.<a href="#EOF-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl>
-
-<hr>
-Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
-<dl><dt><a name="EOF-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#EOF-__delattr__">__delattr__</a>('name') <==> del x.name</tt></dd></dl>
-
-<dl><dt><a name="EOF-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#EOF-__getattribute__">__getattribute__</a>('name') <==> x.name</tt></dd></dl>
-
-<dl><dt><a name="EOF-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#EOF-__getitem__">__getitem__</a>(y) <==> x[y]</tt></dd></dl>
-
-<dl><dt><a name="EOF-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#EOF-__getslice__">__getslice__</a>(i, j) <==> x[i:j]<br>
- <br>
-Use of negative indices is not supported.</tt></dd></dl>
-
-<dl><dt><a name="EOF-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
-
-<dl><dt><a name="EOF-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#EOF-__repr__">__repr__</a>() <==> repr(x)</tt></dd></dl>
-
-<dl><dt><a name="EOF-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#EOF-__setattr__">__setattr__</a>('name', value) <==> x.name = value</tt></dd></dl>
-
-<dl><dt><a name="EOF-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
-
-<hr>
-Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
-<dl><dt><strong>__dict__</strong></dt>
-</dl>
-<dl><dt><strong>args</strong></dt>
-</dl>
-<dl><dt><strong>message</strong></dt>
-<dd><tt>exception message</tt></dd>
-</dl>
-</td></tr></table> <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom> <br>
-<font color="#000000" face="helvetica, arial"><a name="ExceptionPexpect">class <strong>ExceptionPexpect</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
-
-<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt>Base class for all exceptions raised by this module.<br> </tt></td></tr>
-<tr><td> </td>
-<td width="100%"><dl><dt>Method resolution order:</dt>
-<dd><a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a></dd>
-<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
-<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
-<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
-</dl>
-<hr>
-Methods defined here:<br>
-<dl><dt><a name="ExceptionPexpect-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
-
-<dl><dt><a name="ExceptionPexpect-__str__"><strong>__str__</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="ExceptionPexpect-get_trace"><strong>get_trace</strong></a>(self)</dt><dd><tt>This returns an abbreviated stack trace with lines that only concern<br>
-the caller. In other words, the stack trace inside the Pexpect module<br>
-is not included.</tt></dd></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list of weak references to the object (if defined)</tt></dd>
-</dl>
-<hr>
-Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
-<dl><dt><strong>__new__</strong> = <built-in method __new__ of type object at 0x81400e0><dd><tt>T.<a href="#ExceptionPexpect-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl>
-
-<hr>
-Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
-<dl><dt><a name="ExceptionPexpect-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#ExceptionPexpect-__delattr__">__delattr__</a>('name') <==> del x.name</tt></dd></dl>
-
-<dl><dt><a name="ExceptionPexpect-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#ExceptionPexpect-__getattribute__">__getattribute__</a>('name') <==> x.name</tt></dd></dl>
-
-<dl><dt><a name="ExceptionPexpect-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#ExceptionPexpect-__getitem__">__getitem__</a>(y) <==> x[y]</tt></dd></dl>
-
-<dl><dt><a name="ExceptionPexpect-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#ExceptionPexpect-__getslice__">__getslice__</a>(i, j) <==> x[i:j]<br>
- <br>
-Use of negative indices is not supported.</tt></dd></dl>
-
-<dl><dt><a name="ExceptionPexpect-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
-
-<dl><dt><a name="ExceptionPexpect-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#ExceptionPexpect-__repr__">__repr__</a>() <==> repr(x)</tt></dd></dl>
-
-<dl><dt><a name="ExceptionPexpect-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#ExceptionPexpect-__setattr__">__setattr__</a>('name', value) <==> x.name = value</tt></dd></dl>
-
-<dl><dt><a name="ExceptionPexpect-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
-
-<hr>
-Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
-<dl><dt><strong>__dict__</strong></dt>
-</dl>
-<dl><dt><strong>args</strong></dt>
-</dl>
-<dl><dt><strong>message</strong></dt>
-<dd><tt>exception message</tt></dd>
-</dl>
-</td></tr></table> <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom> <br>
-<font color="#000000" face="helvetica, arial"><a name="TIMEOUT">class <strong>TIMEOUT</strong></a>(<a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a>)</font></td></tr>
-
-<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt>Raised when a read time exceeds the timeout.<br> </tt></td></tr>
-<tr><td> </td>
-<td width="100%"><dl><dt>Method resolution order:</dt>
-<dd><a href="pexpect.html#TIMEOUT">TIMEOUT</a></dd>
-<dd><a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a></dd>
-<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
-<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
-<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
-</dl>
-<hr>
-Methods inherited from <a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a>:<br>
-<dl><dt><a name="TIMEOUT-__init__"><strong>__init__</strong></a>(self, value)</dt></dl>
-
-<dl><dt><a name="TIMEOUT-__str__"><strong>__str__</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="TIMEOUT-get_trace"><strong>get_trace</strong></a>(self)</dt><dd><tt>This returns an abbreviated stack trace with lines that only concern<br>
-the caller. In other words, the stack trace inside the Pexpect module<br>
-is not included.</tt></dd></dl>
-
-<hr>
-Data descriptors inherited from <a href="pexpect.html#ExceptionPexpect">ExceptionPexpect</a>:<br>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list of weak references to the object (if defined)</tt></dd>
-</dl>
-<hr>
-Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
-<dl><dt><strong>__new__</strong> = <built-in method __new__ of type object at 0x81400e0><dd><tt>T.<a href="#TIMEOUT-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl>
-
-<hr>
-Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
-<dl><dt><a name="TIMEOUT-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#TIMEOUT-__delattr__">__delattr__</a>('name') <==> del x.name</tt></dd></dl>
-
-<dl><dt><a name="TIMEOUT-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#TIMEOUT-__getattribute__">__getattribute__</a>('name') <==> x.name</tt></dd></dl>
-
-<dl><dt><a name="TIMEOUT-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#TIMEOUT-__getitem__">__getitem__</a>(y) <==> x[y]</tt></dd></dl>
-
-<dl><dt><a name="TIMEOUT-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#TIMEOUT-__getslice__">__getslice__</a>(i, j) <==> x[i:j]<br>
- <br>
-Use of negative indices is not supported.</tt></dd></dl>
-
-<dl><dt><a name="TIMEOUT-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
-
-<dl><dt><a name="TIMEOUT-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#TIMEOUT-__repr__">__repr__</a>() <==> repr(x)</tt></dd></dl>
-
-<dl><dt><a name="TIMEOUT-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#TIMEOUT-__setattr__">__setattr__</a>('name', value) <==> x.name = value</tt></dd></dl>
-
-<dl><dt><a name="TIMEOUT-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
-
-<hr>
-Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
-<dl><dt><strong>__dict__</strong></dt>
-</dl>
-<dl><dt><strong>args</strong></dt>
-</dl>
-<dl><dt><strong>message</strong></dt>
-<dd><tt>exception message</tt></dd>
-</dl>
-</td></tr></table> <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom> <br>
-<font color="#000000" face="helvetica, arial"><a name="spawn">class <strong>spawn</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
-
-<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
-<td colspan=2><tt>This is the main class interface for Pexpect. Use this class to start<br>
-and control child applications.<br> </tt></td></tr>
-<tr><td> </td>
-<td width="100%">Methods defined here:<br>
-<dl><dt><a name="spawn-__del__"><strong>__del__</strong></a>(self)</dt><dd><tt>This makes sure that no system resources are left open. Python only<br>
-garbage collects Python objects. OS file descriptors are not Python<br>
-objects, so they must be handled explicitly. If the child file<br>
-descriptor was opened outside of this class (passed to the constructor)<br>
-then this does not close it.</tt></dd></dl>
-
-<dl><dt><a name="spawn-__init__"><strong>__init__</strong></a>(self, command, args<font color="#909090">=[]</font>, timeout<font color="#909090">=30</font>, maxread<font color="#909090">=2000</font>, searchwindowsize<font color="#909090">=None</font>, logfile<font color="#909090">=None</font>, cwd<font color="#909090">=None</font>, env<font color="#909090">=None</font>)</dt><dd><tt>This is the constructor. The command parameter may be a string that<br>
-includes a command and any arguments to the command. For example::<br>
- <br>
- child = pexpect.<a href="#spawn">spawn</a> ('/usr/bin/ftp')<br>
- child = pexpect.<a href="#spawn">spawn</a> ('/usr/bin/ssh
[email protected]')<br>
- child = pexpect.<a href="#spawn">spawn</a> ('ls -latr /tmp')<br>
- <br>
-You may also construct it with a list of arguments like so::<br>
- <br>
- child = pexpect.<a href="#spawn">spawn</a> ('/usr/bin/ftp', [])<br>
- child = pexpect.<a href="#spawn">spawn</a> ('/usr/bin/ssh', ['
[email protected]'])<br>
- child = pexpect.<a href="#spawn">spawn</a> ('ls', ['-latr', '/tmp'])<br>
- <br>
-After this the child application will be created and will be ready to<br>
-talk to. For normal use, see <a href="#spawn-expect">expect</a>() and <a href="#spawn-send">send</a>() and <a href="#spawn-sendline">sendline</a>().<br>
- <br>
-Remember that Pexpect does NOT interpret shell meta characters such as<br>
-redirect, pipe, or wild cards (>, |, or *). This is a common mistake.<br>
-If you want to run a command and pipe it through another command then<br>
-you must also start a shell. For example::<br>
- <br>
- child = pexpect.<a href="#spawn">spawn</a>('/bin/bash -c "ls -l | grep LOG > log_list.txt"')<br>
- child.<a href="#spawn-expect">expect</a>(pexpect.<a href="#EOF">EOF</a>)<br>
- <br>
-The second form of <a href="#spawn">spawn</a> (where you pass a list of arguments) is useful<br>
-in situations where you wish to <a href="#spawn">spawn</a> a command and pass it its own<br>
-argument list. This can make syntax more clear. For example, the<br>
-following is equivalent to the previous example::<br>
- <br>
- shell_cmd = 'ls -l | grep LOG > log_list.txt'<br>
- child = pexpect.<a href="#spawn">spawn</a>('/bin/bash', ['-c', shell_cmd])<br>
- child.<a href="#spawn-expect">expect</a>(pexpect.<a href="#EOF">EOF</a>)<br>
- <br>
-The maxread attribute sets the read buffer size. This is maximum number<br>
-of bytes that Pexpect will try to read from a TTY at one time. Setting<br>
-the maxread size to 1 will turn off buffering. Setting the maxread<br>
-value higher may help performance in cases where large amounts of<br>
-output are read back from the child. This feature is useful in<br>
-conjunction with searchwindowsize.<br>
- <br>
-The searchwindowsize attribute sets the how far back in the incomming<br>
-seach buffer Pexpect will search for pattern matches. Every time<br>
-Pexpect reads some data from the child it will append the data to the<br>
-incomming buffer. The default is to search from the beginning of the<br>
-imcomming buffer each time new data is read from the child. But this is<br>
-very inefficient if you are running a command that generates a large<br>
-amount of data where you want to match The searchwindowsize does not<br>
-effect the size of the incomming data buffer. You will still have<br>
-access to the full buffer after <a href="#spawn-expect">expect</a>() returns.<br>
- <br>
-The logfile member turns on or off logging. All input and output will<br>
-be copied to the given file <a href="__builtin__.html#object">object</a>. Set logfile to None to stop<br>
-logging. This is the default. Set logfile to sys.stdout to echo<br>
-everything to standard output. The logfile is flushed after each write.<br>
- <br>
-Example log input and output to a file::<br>
- <br>
- child = pexpect.<a href="#spawn">spawn</a>('some_command')<br>
- fout = file('mylog.txt','w')<br>
- child.logfile = fout<br>
- <br>
-Example log to stdout::<br>
- <br>
- child = pexpect.<a href="#spawn">spawn</a>('some_command')<br>
- child.logfile = sys.stdout<br>
- <br>
-The logfile_read and logfile_send members can be used to separately log<br>
-the input from the child and output sent to the child. Sometimes you<br>
-don't want to see everything you write to the child. You only want to<br>
-log what the child sends back. For example::<br>
- <br>
- child = pexpect.<a href="#spawn">spawn</a>('some_command')<br>
- child.logfile_read = sys.stdout<br>
- <br>
-To separately log output sent to the child use logfile_send::<br>
- <br>
- self.<strong>logfile_send</strong> = fout<br>
- <br>
-The delaybeforesend helps overcome a weird behavior that many users<br>
-were experiencing. The typical problem was that a user would <a href="#spawn-expect">expect</a>() a<br>
-"Password:" prompt and then immediately call <a href="#spawn-sendline">sendline</a>() to send the<br>
-password. The user would then see that their password was echoed back<br>
-to them. Passwords don't normally echo. The problem is caused by the<br>
-fact that most applications print out the "Password" prompt and then<br>
-turn off stdin echo, but if you send your password before the<br>
-application turned off echo, then you get your password echoed.<br>
-Normally this wouldn't be a problem when interacting with a human at a<br>
-real keyboard. If you introduce a slight delay just before writing then<br>
-this seems to clear up the problem. This was such a common problem for<br>
-many users that I decided that the default pexpect behavior should be<br>
-to sleep just before writing to the child application. 1/20th of a<br>
-second (50 ms) seems to be enough to clear up the problem. You can set<br>
-delaybeforesend to 0 to return to the old behavior. Most Linux machines<br>
-don't like this to be below 0.03. I don't know why.<br>
- <br>
-Note that <a href="#spawn">spawn</a> is clever about finding commands on your path.<br>
-It uses the same logic that "which" uses to find executables.<br>
- <br>
-If you wish to get the exit status of the child you must call the<br>
-<a href="#spawn-close">close</a>() method. The exit or signal status of the child will be stored<br>
-in self.<strong>exitstatus</strong> or self.<strong>signalstatus</strong>. If the child exited normally<br>
-then exitstatus will store the exit return code and signalstatus will<br>
-be None. If the child was terminated abnormally with a signal then<br>
-signalstatus will store the signal value and exitstatus will be None.<br>
-If you need more detail you can also read the self.<strong>status</strong> member which<br>
-stores the status returned by os.waitpid. You can interpret this using<br>
-os.WIFEXITED/os.WEXITSTATUS or os.WIFSIGNALED/os.TERMSIG.</tt></dd></dl>
-
-<dl><dt><a name="spawn-__iter__"><strong>__iter__</strong></a>(self)</dt><dd><tt>This is to support iterators over a file-like <a href="__builtin__.html#object">object</a>.</tt></dd></dl>
-
-<dl><dt><a name="spawn-__str__"><strong>__str__</strong></a>(self)</dt><dd><tt>This returns a human-readable string that represents the state of<br>
-the <a href="__builtin__.html#object">object</a>.</tt></dd></dl>
-
-<dl><dt><a name="spawn-close"><strong>close</strong></a>(self, force<font color="#909090">=True</font>)</dt><dd><tt>This closes the connection with the child application. Note that<br>
-calling <a href="#spawn-close">close</a>() more than once is valid. This emulates standard Python<br>
-behavior with files. Set force to True if you want to make sure that<br>
-the child is terminated (SIGKILL is sent if the child ignores SIGHUP<br>
-and SIGINT).</tt></dd></dl>
-
-<dl><dt><a name="spawn-compile_pattern_list"><strong>compile_pattern_list</strong></a>(self, patterns)</dt><dd><tt>This compiles a pattern-string or a list of pattern-strings.<br>
-Patterns must be a StringType, <a href="#EOF">EOF</a>, <a href="#TIMEOUT">TIMEOUT</a>, SRE_Pattern, or a list of<br>
-those. Patterns may also be None which results in an empty list (you<br>
-might do this if waiting for an <a href="#EOF">EOF</a> or <a href="#TIMEOUT">TIMEOUT</a> condition without<br>
-expecting any pattern).<br>
- <br>
-This is used by <a href="#spawn-expect">expect</a>() when calling <a href="#spawn-expect_list">expect_list</a>(). Thus <a href="#spawn-expect">expect</a>() is<br>
-nothing more than::<br>
- <br>
- cpl = <a href="#spawn-compile_pattern_list">compile_pattern_list</a>(pl)<br>
- return <a href="#spawn-expect_list">expect_list</a>(cpl, timeout)<br>
- <br>
-If you are using <a href="#spawn-expect">expect</a>() within a loop it may be more<br>
-efficient to compile the patterns first and then call <a href="#spawn-expect_list">expect_list</a>().<br>
-This avoid calls in a loop to <a href="#spawn-compile_pattern_list">compile_pattern_list</a>()::<br>
- <br>
- cpl = <a href="#spawn-compile_pattern_list">compile_pattern_list</a>(my_pattern)<br>
- while some_condition:<br>
- ...<br>
- i = <a href="#spawn-expect_list">expect_list</a>(clp, timeout)<br>
- ...</tt></dd></dl>
-
-<dl><dt><a name="spawn-eof"><strong>eof</strong></a>(self)</dt><dd><tt>This returns True if the <a href="#EOF">EOF</a> exception was ever raised.</tt></dd></dl>
-
-<dl><dt><a name="spawn-expect"><strong>expect</strong></a>(self, pattern, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=None</font>)</dt><dd><tt>This seeks through the stream until a pattern is matched. The<br>
-pattern is overloaded and may take several types. The pattern can be a<br>
-StringType, <a href="#EOF">EOF</a>, a compiled re, or a list of any of those types.<br>
-Strings will be compiled to re types. This returns the index into the<br>
-pattern list. If the pattern was not a list this returns index 0 on a<br>
-successful match. This may raise exceptions for <a href="#EOF">EOF</a> or <a href="#TIMEOUT">TIMEOUT</a>. To<br>
-avoid the <a href="#EOF">EOF</a> or <a href="#TIMEOUT">TIMEOUT</a> exceptions add <a href="#EOF">EOF</a> or <a href="#TIMEOUT">TIMEOUT</a> to the pattern<br>
-list. That will cause expect to match an <a href="#EOF">EOF</a> or <a href="#TIMEOUT">TIMEOUT</a> condition<br>
-instead of raising an exception.<br>
- <br>
-If you pass a list of patterns and more than one matches, the first match<br>
-in the stream is chosen. If more than one pattern matches at that point,<br>
-the leftmost in the pattern list is chosen. For example::<br>
- <br>
- # the input is 'foobar'<br>
- index = p.expect (['bar', 'foo', 'foobar'])<br>
- # returns 1 ('foo') even though 'foobar' is a "better" match<br>
- <br>
-Please note, however, that buffering can affect this behavior, since<br>
-input arrives in unpredictable chunks. For example::<br>
- <br>
- # the input is 'foobar'<br>
- index = p.expect (['foobar', 'foo'])<br>
- # returns 0 ('foobar') if all input is available at once,<br>
- # but returs 1 ('foo') if parts of the final 'bar' arrive late<br>
- <br>
-After a match is found the instance attributes 'before', 'after' and<br>
-'match' will be set. You can see all the data read before the match in<br>
-'before'. You can see the data that was matched in 'after'. The<br>
-re.MatchObject used in the re match will be in 'match'. If an error<br>
-occurred then 'before' will be set to all the data read so far and<br>
-'after' and 'match' will be None.<br>
- <br>
-If timeout is -1 then timeout will be set to the self.<strong>timeout</strong> value.<br>
- <br>
-A list entry may be <a href="#EOF">EOF</a> or <a href="#TIMEOUT">TIMEOUT</a> instead of a string. This will<br>
-catch these exceptions and return the index of the list entry instead<br>
-of raising the exception. The attribute 'after' will be set to the<br>
-exception type. The attribute 'match' will be None. This allows you to<br>
-write code like this::<br>
- <br>
- index = p.expect (['good', 'bad', pexpect.<a href="#EOF">EOF</a>, pexpect.<a href="#TIMEOUT">TIMEOUT</a>])<br>
- if index == 0:<br>
- do_something()<br>
- elif index == 1:<br>
- do_something_else()<br>
- elif index == 2:<br>
- do_some_other_thing()<br>
- elif index == 3:<br>
- do_something_completely_different()<br>
- <br>
-instead of code like this::<br>
- <br>
- try:<br>
- index = p.expect (['good', 'bad'])<br>
- if index == 0:<br>
- do_something()<br>
- elif index == 1:<br>
- do_something_else()<br>
- except <a href="#EOF">EOF</a>:<br>
- do_some_other_thing()<br>
- except <a href="#TIMEOUT">TIMEOUT</a>:<br>
- do_something_completely_different()<br>
- <br>
-These two forms are equivalent. It all depends on what you want. You<br>
-can also just expect the <a href="#EOF">EOF</a> if you are waiting for all output of a<br>
-child to finish. For example::<br>
- <br>
- p = pexpect.<a href="#spawn">spawn</a>('/bin/ls')<br>
- p.expect (pexpect.<a href="#EOF">EOF</a>)<br>
- print p.before<br>
- <br>
-If you are trying to optimize for speed then see <a href="#spawn-expect_list">expect_list</a>().</tt></dd></dl>
-
-<dl><dt><a name="spawn-expect_exact"><strong>expect_exact</strong></a>(self, pattern_list, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=-1</font>)</dt><dd><tt>This is similar to <a href="#spawn-expect">expect</a>(), but uses plain string matching instead<br>
-of compiled regular expressions in 'pattern_list'. The 'pattern_list'<br>
-may be a string; a list or other sequence of strings; or <a href="#TIMEOUT">TIMEOUT</a> and<br>
-<a href="#EOF">EOF</a>.<br>
- <br>
-This call might be faster than <a href="#spawn-expect">expect</a>() for two reasons: string<br>
-searching is faster than RE matching and it is possible to limit the<br>
-search to just the end of the input buffer.<br>
- <br>
-This method is also useful when you don't want to have to worry about<br>
-escaping regular expression characters that you want to match.</tt></dd></dl>
-
-<dl><dt><a name="spawn-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 takes a list of compiled regular expressions and returns the<br>
-index into the pattern_list that matched the child output. The list may<br>
-also contain <a href="#EOF">EOF</a> or <a href="#TIMEOUT">TIMEOUT</a> (which are not compiled regular<br>
-expressions). This method is similar to the <a href="#spawn-expect">expect</a>() method except that<br>
-<a href="#spawn-expect_list">expect_list</a>() does not recompile the pattern list on every call. This<br>
-may help if you are trying to optimize for speed, otherwise just use<br>
-the <a href="#spawn-expect">expect</a>() method. This is called by <a href="#spawn-expect">expect</a>(). If timeout==-1 then<br>
-the self.<strong>timeout</strong> value is used. If searchwindowsize==-1 then the<br>
-self.<strong>searchwindowsize</strong> value is used.</tt></dd></dl>
-
-<dl><dt><a name="spawn-expect_loop"><strong>expect_loop</strong></a>(self, searcher, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=-1</font>)</dt><dd><tt>This is the common loop used inside expect. The 'searcher' should be<br>
-an instance of searcher_re or searcher_string, which describes how and what<br>
-to search for in the input.<br>
- <br>
-See <a href="#spawn-expect">expect</a>() for other arguments, return value and exceptions.</tt></dd></dl>
-
-<dl><dt><a name="spawn-fileno"><strong>fileno</strong></a>(self)</dt><dd><tt>This returns the file descriptor of the pty for the child.</tt></dd></dl>
-
-<dl><dt><a name="spawn-flush"><strong>flush</strong></a>(self)</dt><dd><tt>This does nothing. It is here to support the interface for a<br>
-File-like <a href="__builtin__.html#object">object</a>.</tt></dd></dl>
-
-<dl><dt><a name="spawn-getecho"><strong>getecho</strong></a>(self)</dt><dd><tt>This returns the terminal echo mode. This returns True if echo is<br>
-on or False if echo is off. Child applications that are expecting you<br>
-to enter a password often set ECHO False. See <a href="#spawn-waitnoecho">waitnoecho</a>().</tt></dd></dl>
-
-<dl><dt><a name="spawn-getwinsize"><strong>getwinsize</strong></a>(self)</dt><dd><tt>This returns the terminal window size of the child tty. The return<br>
-value is a tuple of (rows, cols).</tt></dd></dl>
-
-<dl><dt><a name="spawn-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 gives control of the child process to the interactive user (the<br>
-human at the keyboard). Keystrokes are sent to the child process, and<br>
-the stdout and stderr output of the child process is printed. This<br>
-simply echos the child stdout and child stderr to the real stdout and<br>
-it echos the real stdin to the child stdin. When the user types the<br>
-escape_character this method will stop. The default for<br>
-escape_character is ^]. This should not be confused with ASCII 27 --<br>
-the ESC character. ASCII 29 was chosen for historical merit because<br>
-this is the character used by 'telnet' as the escape character. The<br>
-escape_character will not be sent to the child process.<br>
- <br>
-You may pass in optional input and output filter functions. These<br>
-functions should take a string and return a string. The output_filter<br>
-will be passed all the output from the child process. The input_filter<br>
-will be passed all the keyboard input from the user. The input_filter<br>
-is run BEFORE the check for the escape_character.<br>
- <br>
-Note that if you change the window size of the parent the SIGWINCH<br>
-signal will not be passed through to the child. If you want the child<br>
-window size to change when the parent's window size changes then do<br>
-something like the following example::<br>
- <br>
- import pexpect, struct, fcntl, termios, signal, sys<br>
- def sigwinch_passthrough (sig, data):<br>
- s = struct.pack("HHHH", 0, 0, 0, 0)<br>
- a = struct.unpack('hhhh', fcntl.ioctl(sys.stdout.<a href="#spawn-fileno">fileno</a>(), termios.TIOCGWINSZ , s))<br>
- global p<br>
- p.<a href="#spawn-setwinsize">setwinsize</a>(a[0],a[1])<br>
- p = pexpect.<a href="#spawn">spawn</a>('/bin/bash') # Note this is global and used in sigwinch_passthrough.<br>
- signal.signal(signal.SIGWINCH, sigwinch_passthrough)<br>
- p.<a href="#spawn-interact">interact</a>()</tt></dd></dl>
-
-<dl><dt><a name="spawn-isalive"><strong>isalive</strong></a>(self)</dt><dd><tt>This tests if the child process is running or not. This is<br>
-non-blocking. If the child was terminated then this will read the<br>
-exitstatus or signalstatus of the child. This returns True if the child<br>
-process appears to be running or False if not. It can take literally<br>
-SECONDS for Solaris to return the right status.</tt></dd></dl>
-
-<dl><dt><a name="spawn-isatty"><strong>isatty</strong></a>(self)</dt><dd><tt>This returns True if the file descriptor is open and connected to a<br>
-tty(-like) device, else False.</tt></dd></dl>
-
-<dl><dt><a name="spawn-kill"><strong>kill</strong></a>(self, sig)</dt><dd><tt>This sends the given signal to the child application. In keeping<br>
-with UNIX tradition it has a misleading name. It does not necessarily<br>
-kill the child unless you send the right signal.</tt></dd></dl>
-
-<dl><dt><a name="spawn-next"><strong>next</strong></a>(self)</dt><dd><tt>This is to support iterators over a file-like <a href="__builtin__.html#object">object</a>.</tt></dd></dl>
-
-<dl><dt><a name="spawn-read"><strong>read</strong></a>(self, size<font color="#909090">=-1</font>)</dt><dd><tt>This reads at most "size" bytes from the file (less if the read hits<br>
-<a href="#EOF">EOF</a> before obtaining size bytes). If the size argument is negative or<br>
-omitted, read all data until <a href="#EOF">EOF</a> is reached. The bytes are returned as<br>
-a string <a href="__builtin__.html#object">object</a>. An empty string is returned when <a href="#EOF">EOF</a> is encountered<br>
-immediately.</tt></dd></dl>
-
-<dl><dt><a name="spawn-read_nonblocking"><strong>read_nonblocking</strong></a>(self, size<font color="#909090">=1</font>, timeout<font color="#909090">=-1</font>)</dt><dd><tt>This reads at most size characters from the child application. It<br>
-includes a timeout. If the read does not complete within the timeout<br>
-period then a <a href="#TIMEOUT">TIMEOUT</a> exception is raised. If the end of file is read<br>
-then an <a href="#EOF">EOF</a> exception will be raised. If a log file was set using<br>
-<a href="#spawn-setlog">setlog</a>() then all data will also be written to the log file.<br>
- <br>
-If timeout is None then the read may block indefinitely. If timeout is -1<br>
-then the self.<strong>timeout</strong> value is used. If timeout is 0 then the child is<br>
-polled and if there was no data immediately ready then this will raise<br>
-a <a href="#TIMEOUT">TIMEOUT</a> exception.<br>
- <br>
-The timeout refers only to the amount of time to read at least one<br>
-character. This is not effected by the 'size' parameter, so if you call<br>
-<a href="#spawn-read_nonblocking">read_nonblocking</a>(size=100, timeout=30) and only one character is<br>
-available right away then one character will be returned immediately.<br>
-It will not wait for 30 seconds for another 99 characters to come in.<br>
- <br>
-This is a wrapper around os.<a href="#spawn-read">read</a>(). It uses select.select() to<br>
-implement the timeout.</tt></dd></dl>
-
-<dl><dt><a name="spawn-readline"><strong>readline</strong></a>(self, size<font color="#909090">=-1</font>)</dt><dd><tt>This reads and returns one entire line. A trailing newline is kept<br>
-in the string, but may be absent when a file ends with an incomplete<br>
-line. Note: This <a href="#spawn-readline">readline</a>() looks for a \r\n pair even on UNIX<br>
-because this is what the pseudo tty device returns. So contrary to what<br>
-you may expect you will receive the newline as \r\n. An empty string<br>
-is returned when <a href="#EOF">EOF</a> is hit immediately. Currently, the size argument is<br>
-mostly ignored, so this behavior is not standard for a file-like<br>
-<a href="__builtin__.html#object">object</a>. If size is 0 then an empty string is returned.</tt></dd></dl>
-
-<dl><dt><a name="spawn-readlines"><strong>readlines</strong></a>(self, sizehint<font color="#909090">=-1</font>)</dt><dd><tt>This reads until <a href="#EOF">EOF</a> using <a href="#spawn-readline">readline</a>() and returns a list containing<br>
-the lines thus read. The optional "sizehint" argument is ignored.</tt></dd></dl>
-
-<dl><dt><a name="spawn-send"><strong>send</strong></a>(self, s)</dt><dd><tt>This sends a string to the child process. This returns the number of<br>
-bytes written. If a log file was set then the data is also written to<br>
-the log.</tt></dd></dl>
-
-<dl><dt><a name="spawn-sendcontrol"><strong>sendcontrol</strong></a>(self, char)</dt><dd><tt>This sends a control character to the child such as Ctrl-C or<br>
-Ctrl-D. For example, to send a Ctrl-G (ASCII 7)::<br>
- <br>
- child.<a href="#spawn-sendcontrol">sendcontrol</a>('g')<br>
- <br>
-See also, <a href="#spawn-sendintr">sendintr</a>() and <a href="#spawn-sendeof">sendeof</a>().</tt></dd></dl>
-
-<dl><dt><a name="spawn-sendeof"><strong>sendeof</strong></a>(self)</dt><dd><tt>This sends an <a href="#EOF">EOF</a> to the child. This sends a character which causes<br>
-the pending parent output buffer to be sent to the waiting child<br>
-program without waiting for end-of-line. If it is the first character<br>
-of the line, the <a href="#spawn-read">read</a>() in the user program returns 0, which signifies<br>
-end-of-file. This means to work as expected a <a href="#spawn-sendeof">sendeof</a>() has to be<br>
-called at the beginning of a line. This method does not send a newline.<br>
-It is the responsibility of the caller to ensure the eof is sent at the<br>
-beginning of a line.</tt></dd></dl>
-
-<dl><dt><a name="spawn-sendintr"><strong>sendintr</strong></a>(self)</dt><dd><tt>This sends a SIGINT to the child. It does not require<br>
-the SIGINT to be the first character on a line.</tt></dd></dl>
-
-<dl><dt><a name="spawn-sendline"><strong>sendline</strong></a>(self, s<font color="#909090">=''</font>)</dt><dd><tt>This is like <a href="#spawn-send">send</a>(), but it adds a line feed (os.linesep). This<br>
-returns the number of bytes written.</tt></dd></dl>
-
-<dl><dt><a name="spawn-setecho"><strong>setecho</strong></a>(self, state)</dt><dd><tt>This sets the terminal echo mode on or off. Note that anything the<br>
-child sent before the echo will be lost, so you should be sure that<br>
-your input buffer is empty before you call <a href="#spawn-setecho">setecho</a>(). For example, the<br>
-following will work as expected::<br>
- <br>
- p = pexpect.<a href="#spawn">spawn</a>('cat')<br>
- p.sendline ('1234') # We will see this twice (once from tty echo and again from cat).<br>
- p.expect (['1234'])<br>
- p.expect (['1234'])<br>
- p.<a href="#spawn-setecho">setecho</a>(False) # Turn off tty echo<br>
- p.sendline ('abcd') # We will set this only once (echoed by cat).<br>
- p.sendline ('wxyz') # We will set this only once (echoed by cat)<br>
- p.expect (['abcd'])<br>
- p.expect (['wxyz'])<br>
- <br>
-The following WILL NOT WORK because the lines sent before the setecho<br>
-will be lost::<br>
- <br>
- p = pexpect.<a href="#spawn">spawn</a>('cat')<br>
- p.sendline ('1234') # We will see this twice (once from tty echo and again from cat).<br>
- p.<a href="#spawn-setecho">setecho</a>(False) # Turn off tty echo<br>
- p.sendline ('abcd') # We will set this only once (echoed by cat).<br>
- p.sendline ('wxyz') # We will set this only once (echoed by cat)<br>
- p.expect (['1234'])<br>
- p.expect (['1234'])<br>
- p.expect (['abcd'])<br>
- p.expect (['wxyz'])</tt></dd></dl>
-
-<dl><dt><a name="spawn-setlog"><strong>setlog</strong></a>(self, fileobject)</dt><dd><tt>This method is no longer supported or allowed.</tt></dd></dl>
-
-<dl><dt><a name="spawn-setmaxread"><strong>setmaxread</strong></a>(self, maxread)</dt><dd><tt>This method is no longer supported or allowed. I don't like getters<br>
-and setters without a good reason.</tt></dd></dl>
-
-<dl><dt><a name="spawn-setwinsize"><strong>setwinsize</strong></a>(self, r, c)</dt><dd><tt>This sets the terminal window size of the child tty. This will cause<br>
-a SIGWINCH signal to be sent to the child. This does not change the<br>
-physical window size. It changes the size reported to TTY-aware<br>
-applications like vi or curses -- applications that respond to the<br>
-SIGWINCH signal.</tt></dd></dl>
-
-<dl><dt><a name="spawn-terminate"><strong>terminate</strong></a>(self, force<font color="#909090">=False</font>)</dt><dd><tt>This forces a child process to terminate. It starts nicely with<br>
-SIGHUP and SIGINT. If "force" is True then moves onto SIGKILL. This<br>
-returns True if the child was terminated. This returns False if the<br>
-child could not be terminated.</tt></dd></dl>
-
-<dl><dt><a name="spawn-wait"><strong>wait</strong></a>(self)</dt><dd><tt>This waits until the child exits. This is a blocking call. This will<br>
-not read any data from the child, so this will block forever if the<br>
-child has unread output and has terminated. In other words, the child<br>
-may have printed output then called exit(); but, technically, the child<br>
-is still alive until its output is read.</tt></dd></dl>
-
-<dl><dt><a name="spawn-waitnoecho"><strong>waitnoecho</strong></a>(self, timeout<font color="#909090">=-1</font>)</dt><dd><tt>This waits until the terminal ECHO flag is set False. This returns<br>
-True if the echo mode is off. This returns False if the ECHO flag was<br>
-not set False before the timeout. This can be used to detect when the<br>
-child is waiting for a password. Usually a child application will turn<br>
-off echo mode when it is waiting for the user to enter a password. For<br>
-example, instead of expecting the "password:" prompt you can wait for<br>
-the child to set ECHO off::<br>
- <br>
- p = pexpect.<a href="#spawn">spawn</a> ('ssh
[email protected]')<br>
- p.<a href="#spawn-waitnoecho">waitnoecho</a>()<br>
- p.<a href="#spawn-sendline">sendline</a>(mypassword)<br>
- <br>
-If timeout is None then this method to block forever until ECHO flag is<br>
-False.</tt></dd></dl>
-
-<dl><dt><a name="spawn-write"><strong>write</strong></a>(self, s)</dt><dd><tt>This is similar to <a href="#spawn-send">send</a>() except that there is no return value.</tt></dd></dl>
-
-<dl><dt><a name="spawn-writelines"><strong>writelines</strong></a>(self, sequence)</dt><dd><tt>This calls <a href="#spawn-write">write</a>() for each element in the sequence. The sequence<br>
-can be any iterable <a href="__builtin__.html#object">object</a> producing strings, typically a list of<br>
-strings. This does not add line separators There is no return value.</tt></dd></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary for instance variables (if defined)</tt></dd>
-</dl>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list of weak references to the object (if defined)</tt></dd>
-</dl>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#eeaa77">
-<td colspan=3 valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
-
-<tr><td bgcolor="#eeaa77"><tt> </tt></td><td> </td>
-<td width="100%"><dl><dt><a name="-run"><strong>run</strong></a>(command, timeout<font color="#909090">=-1</font>, withexitstatus<font color="#909090">=False</font>, events<font color="#909090">=None</font>, extra_args<font color="#909090">=None</font>, logfile<font color="#909090">=None</font>, cwd<font color="#909090">=None</font>, env<font color="#909090">=None</font>)</dt><dd><tt>This function runs the given command; waits for it to finish; then<br>
-returns all output as a string. STDERR is included in output. If the full<br>
-path to the command is not given then the path is searched.<br>
- <br>
-Note that lines are terminated by CR/LF (\r\n) combination even on<br>
-UNIX-like systems because this is the standard for pseudo ttys. If you set<br>
-'withexitstatus' to true, then run will return a tuple of (command_output,<br>
-exitstatus). If 'withexitstatus' is false then this returns just<br>
-command_output.<br>
- <br>
-The <a href="#-run">run</a>() function can often be used instead of creating a <a href="#spawn">spawn</a> instance.<br>
-For example, the following code uses <a href="#spawn">spawn</a>::<br>
- <br>
- from pexpect import *<br>
- child = <a href="#spawn">spawn</a>('scp foo
[email protected]:.')<br>
- child.expect ('(?i)password')<br>
- child.sendline (mypassword)<br>
- <br>
-The previous code can be replace with the following::<br>
- <br>
- from pexpect import *<br>
- run ('scp foo
[email protected]:.', events={'(?i)password': mypassword})<br>
- <br>
-Examples<br>
-========<br>
- <br>
-Start the apache daemon on the local machine::<br>
- <br>
- from pexpect import *<br>
- run ("/usr/local/apache/bin/apachectl start")<br>
- <br>
-Check in a file using SVN::<br>
- <br>
- from pexpect import *<br>
- run ("svn ci -m 'automatic commit' my_file.py")<br>
- <br>
-Run a command and capture exit status::<br>
- <br>
- from pexpect import *<br>
- (command_output, exitstatus) = run ('ls -l /bin', withexitstatus=1)<br>
- <br>
-Tricky Examples<br>
-===============<br>
- <br>
-The following will run SSH and execute 'ls -l' on the remote machine. The<br>
-password 'secret' will be sent if the '(?i)password' pattern is ever seen::<br>
- <br>
- run ("ssh
[email protected] 'ls -l'", events={'(?i)password':'secret\n'})<br>
- <br>
-This will start mencoder to rip a video from DVD. This will also display<br>
-progress ticks every 5 seconds as it runs. For example::<br>
- <br>
- from pexpect import *<br>
- def print_ticks(d):<br>
- print d['event_count'],<br>
- run ("mencoder dvd://1 -o video.avi -oac copy -ovc copy", events={<a href="#TIMEOUT">TIMEOUT</a>:print_ticks}, timeout=5)<br>
- <br>
-The 'events' argument should be a dictionary of patterns and responses.<br>
-Whenever one of the patterns is seen in the command out <a href="#-run">run</a>() will send the<br>
-associated response string. Note that you should put newlines in your<br>
-string if Enter is necessary. The responses may also contain callback<br>
-functions. Any callback is function that takes a dictionary as an argument.<br>
-The dictionary contains all the locals from the <a href="#-run">run</a>() function, so you can<br>
-access the child <a href="#spawn">spawn</a> <a href="__builtin__.html#object">object</a> or any other variable defined in <a href="#-run">run</a>()<br>
-(event_count, child, and extra_args are the most useful). A callback may<br>
-return True to stop the current run process otherwise <a href="#-run">run</a>() continues until<br>
-the next event. A callback may also return a string which will be sent to<br>
-the child. 'extra_args' is not used by directly <a href="#-run">run</a>(). It provides a way to<br>
-pass data to a callback function through <a href="#-run">run</a>() through the locals<br>
-dictionary passed to a callback.</tt></dd></dl>
- <dl><dt><a name="-split_command_line"><strong>split_command_line</strong></a>(command_line)</dt><dd><tt>This splits a command line into a list of arguments. It splits arguments<br>
-on spaces, but handles embedded quotes, doublequotes, and escaped<br>
-characters. It's impossible to do this with a regular expression, so I<br>
-wrote a little state machine to parse the command line.</tt></dd></dl>
- <dl><dt><a name="-which"><strong>which</strong></a>(filename)</dt><dd><tt>This takes a given filename; tries to find it in the environment path;<br>
-then checks if it is executable. This returns the full path to the filename<br>
-if found and executable. Otherwise this returns None.</tt></dd></dl>
-</td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#55aa55">
-<td colspan=3 valign=bottom> <br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-
-<tr><td bgcolor="#55aa55"><tt> </tt></td><td> </td>
-<td width="100%"><strong>__all__</strong> = ['ExceptionPexpect', 'EOF', 'TIMEOUT', 'spawn', 'run', 'which', 'split_command_line', '__version__', '__revision__']<br>
-<strong>__revision__</strong> = '$Revision: 399 $'<br>
-<strong>__version__</strong> = '2.3'</td></tr></table>
-</body></html>
\ No newline at end of file