<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Pexpect - Examples</title> <link rel="stylesheet" href="clean.css" type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="Author" content="Noah Spurrier"> <meta name="Keywords" content="pexpect, Noah Spurrier, Python, Libes, TCL, Expect, pipe, popen, pyExpect, expectpy, expect-like, expect-alike, expect like"> <meta name="Description" content="Examples for using Pexpect."> </head> <body bgcolor="#ffffff" text="#000000"> <div id="Header"> <h1>Pexpect Examples</h1> </div> <div id="Content"> <p><span class="code">hive.py</span></p> <p><blockquote> This script creates SSH connections to a list of hosts that you provide. Then you are given a command line prompt. Each shell command that you enter is sent to all the hosts. The response from each host is collected and printed. For example, you could connect to a dozen different machines and reboot them all at once. </p></blockquote> <p><span class="code">script.py</span></p> <p><blockquote> This implements a command similar to the classic BSD "script" command. This will start a subshell and log all input and output to a file. This demonstrates the interact() method of Pexpect. </p></blockquote> <p><span class="code">fix_cvs_files.py</span></p> <p><blockquote> This is for cleaning up binary files improperly added to CVS. This script scans the given path to find binary files; checks with CVS to see if the sticky options are set to -kb; finally if sticky options are not -kb then uses 'cvs admin' to set the -kb option. </p></blockquote> <p><span class="code">ftp.py</span></p> <p><blockquote> This demonstrates an FTP "bookmark". This connects to an ftp site; does a few ftp stuff; and then gives the user interactive control over the session. In this case the "bookmark" is to a directory on the OpenBSD ftp server. It puts you in the i386 packages directory. You can easily modify this for other sites. This demonstrates the interact() method of Pexpect. </p></blockquote> <p><span class="code">monitor.py</span></p> <p><blockquote> This runs a sequence of commands on a remote host using SSH. It runs a simple system checks such as uptime and free to monitor the state of the remote host. </p></blockquote> <p><span class="code">passmass.py</span></p> <p><blockquote> This will login to each given server and change the password of the given user. This demonstrates scripting logins and passwords. </p></blockquote> <p><span class="code">python.py</span></p> <p><blockquote> This starts the python interpreter and prints the greeting message backwards. It then gives the user iteractive control of Python. It's pretty useless! </p></blockquote> <p><span class="code">rippy.py</span></p> <p><blockquote> This is a wizard for mencoder. It greatly simplifies the process of ripping a DVD to Divx (mpeg4) format. It can transcode from any video file to another. It has options for resampling the audio stream; removing interlace artifacts, fitting to a target file size, etc. There are lots of options, but the process is simple and easy to use. </p></blockquote> <p><span class="code">sshls.py</span></p> <p><blockquote> This lists a directory on a remote machine. </p></blockquote> <p><span class="code">ssh_tunnel.py</span></p> <p><blockquote> This starts an SSH tunnel to a remote machine. It monitors the connection and restarts the tunnel if it goes down. </p></blockquote> <p><span class="code">uptime.py</span></p> <p><blockquote> This will run the uptime command and parse the output into variables. This demonstrates using a single regular expression to match the output of a command and capturing different variable in match groups. The grouping regular expression handles a wide variety of different uptime formats. </blockquote> <p> <a href="http://sourceforge.net/projects/pexpect/" title="The Pexpect project page on SourceForge.net"> <img src="http://sourceforge.net/sflogo.php?group_id=59762&type=5" alt="The Pexpect project page on SourceForge.net" border="0" height="31" width="105"> </a> </p> </div> </body> </html>