Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
Python, Lua, Tcl, C and C++ training - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Java, Ruby, MySQL and Linux / Tomcat systems
Automating processes through Expect

What is Expect? Let me give you an example of how it's used to help answer that question.

I want to connect to a remote host that I can access through FTP, and have a look at all the files with "top", "sql" and "txt" in their names in my home directory. And that's something I need to do on a regular basis - perhaps checking logs on a web server.

I could type in the instructions longhand - but that would get monotonous on a regular basis - so I would prefer to run FTP controlling it like a puppet on a string - and that string in Expect.

Firstly, I do the job manually, once, and note down the exact prompts that I get, and the exact strings I type in. You noted, I hope, that I say "exact", didn't you - I must get spaces, carriage returns, line feeds right.

Then I write my code. The spawn command is used to trigger FTP. The expect command is used to await a prompt. And the send command is used to answer those prompts. Finally, I can use the variable called expect_out(buffer) which stores the complete response received prior to each "expect" to look at my results.

Here's a working example.

log_user 0
# Expect is a Tcl extension
# So all the Tcl commands are available too
puts "yes I am tickling"
spawn ftp
expect "): "
send "trainee\r"
expect "sword: "
send "abc123\r"
expect "ftp> "
send "ls\r"
expect "ftp> "
# The response we just got will have included
# the lines we want (and much more!) so that we
# can now use regular Tcl commands to extract it
set parts [split $expect_out(buffer) \n]
foreach line $parts {
  if {[regexp top|sql|txt $line]} {puts $line}
# Close out cleanly
send "quit\r"
expect "eof"

That's very much a "spike" solution - a demonstration of principles; the expect command can wait for a whole series of alternatives (including error conditions) and the application above could be extended to handle them as appropriate, for example. And you can even run multiple spawned processes in parallel.

Checking network connectivity As well as Tcl commands, you can use Tk commands with Expect - that means that you can put a graphic front end onto it. One of the things I need to do from time to time is to check whether my servers are up and running, and an Expect and Tk tool is ideal for the purpose. You can see my source code here.

Expect, and Tcl are covered on our Tcl and Expect course. We cover Tk on our Tk course

(written 2008-04-05)

Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
T211 - Tcl/Tk - What is Expect? Why use it?
  [4678] Expect with Ruby - a training example to get you started - (2016-05-18)
  [4405] Backup procedures - via backup server - (2015-01-24)
  [3572] Adding Expect on top of Tcl - what is it and where can I get a training course to learn about it? - (2012-01-08)
  [3286] Should we cover expect and/or Tk on our public Tcl courses? - (2011-05-11)
  [3009] Expect in Perl - a short explanation and a practical example - (2010-10-22)
  [2489] Parallel Pinging, using Python Threads or Expect spawn lists - (2009-11-02)
  [2474] Using Tcl and Expect to automate repetitive jobs - (2009-10-24)
  [1531] Expecting a item from a list of possibles - (2008-02-04)
  [1469] Curley brackets v double quotes - Tcl, Tk, Expect - (2007-12-12)
  [1411] Buffering of inputs to expect, and match order - (2007-10-27)
  [1409] What is Expect? - (2007-10-26)
  [1174] Installing Tcl and Expect on Solaris 10 - a checklist - (2007-05-02)
  [1173] Cheat Sheet / Check list for Expect maintainers - (2007-05-02)
  [435] Expect for Windows - (2005-09-04)
  [286] Automating regular manual procedures - (2005-04-21)

Back to
Replacing the last comma with an and
Previous and next
Horse's mouth home
Forward to
Do not SHOUT and do not whisper
Some other Articles
Sheep Shearers, Marathon Runners and Ocean Sailors
Learning and understanding scripting programming techniques
M25 / South Mimms Service Area
Do not SHOUT and do not whisper
Automating processes through Expect
Replacing the last comma with an and
Cambidge - Tcl, Expect and Perl courses
Fresher tutor, better course
Every link has two ends - fixing 404s at the recipient
Comparing hotels - as a guest and from the proprietors view
4754 posts, page by page
Link to page ... 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 at 50 posts per page

This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2017: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/1602_Aut ... xpect.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat