Expect is known primarily as an indispensable application for system administrators. Amazingly enough, it is, at its heart, Just Another Tcl Extension (JATE).
People use Expect to automate interaction with non-GUI (and typically non-cursor-controlled, even though a persevering Expect programmer can tackle them, too) applications that prompt the user for input.
Examples of commands that often appear in Expect scripts are the Unix passwd, ftp, telnet, and command-line shells. Expect is the natural answer for those who want to automate password changes, or periodically update FTP sites, or check the statuses of a collection of remote systems by logging in.
External Resources:
http://expect.nist.gov/ is the home Web site for Expect. It supplies sources and considerable history, background, and instruction. It does fail to mention, though, recognition [L1 ] of Expect as one of the 100 most important publications of NIST's [L2 ] first century.
This package is part of the ActiveTcl Batteries Included distribution on unix and an up-to-date Windows version is available commercially [L3 ].
ActiveState maintains online copies of documentation at [L4 ].
There's an expect FAQ here: http://expect.nist.gov/FAQ.html
There's a book called BOOK Exploring Expect
CL keeps a bit of supplementary information on Expect at [L5 ].
Expect External Resources gives pointers some more wiki-external Expect material.
Wiki-Local Expect Resources:
Remote input-output with Expect
Expect for languages other than Tcl
Most programmers don't know what Expect can do for them
Network programming with Expect
Simplify the handling of ANSI terminals using Expect or send special characters
An example wherein Expect controls a pager
Expect Articles
Don explains how far from trivial pty management is, and other lessons, in his memoir [L6 ] on Expect's first seven years.
"Expect Success" [L7 ] is, for Kim Richert, "the best Expect article I've read".
"Expect--the only language you need" [L8 ]
"Expect: The Firefighter's Friend" [L9 ]
"Unknown Expect" [L10 ]
"Test-driven development, Expect, and Systems Administration" [L11 ]
LV Note that expect is also a command that is a part of the expect extension; see http://www.tcl.tk/man/expect5.31/expect.1.html for the doc.