Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Cheat Sheet / Check list for Expect maintainers

Programming in Expect can be very different (and more challenging) than conventional programming. Rather than write code (structured, if you like) through a series of events, you'll do better to start off with a co-operation diagram of the process that you want to automate [[For the newcomer, Expect is a language / system that lets you automate the running of command line based programs that require user interaction, with Expect acting rather like a puppeteer in pulling the strings and watching the responses ofthe target program.]]

As you'll want to store, analyse and make decisions based on the outputs from your manipulation of the target program, Expect is usually built in top of the Tcl language which provides a rich array of facilities ... and the three most fundamental additional commands are:

spawn to start a controlled process
send to send text to that controlled process
expect to wait for a response from that controlled process.

There are many other commands available too - and each of the three I mentioned has an interesting array of options associated with it.

The question arose yesterday - "What do I need to know to look at / debug / maintain Expect scripts that have been written by others and I maintain / what are the common issues and pitfalls". Now THERE is an interesting question to help me clear my mind. What did I come up with?

1. Know the fundamentals of Tcl - that it's a command based language and what thet implies, and understand the difference between "...", (...), [....] and {....}. Know when to use a $ character in front of a variable name, and when NOT to.

2. Understand the significance of spaces, new lines and blocking with { and }.

Then for debug / specifics on Expect:

a) be aware of the "--" option on many commands (the option to end all other options) - what it is and what it means.

b) be aware of different line teminators \r and \n for carriage return and new line / line feed.

c) remember that you much "expect" to receive an echo of what you send

d) When expecting a glob or regular expression, look for a clear end value and try to avoid wild cards on the end - they are a recipe for complexity as you don't know where your inputs will get trimmed at each expect

e) Beware cardinal values. Someone is going to have computers called "ping" and "pong" and if you're automating ping that could give some issues.

f) Remember to wait for trailing spaces on prompts if they're issued by the program you're automating

g) If the program that you're automating is upgraded, you MUST retest your expect script and you can "expect" it to need updating if the user interface has changed AT ALL. One change from a lower case to a capital letter in a prompt might be all that it takes.

h) You may need to wait on turn-around for some programs (expect can send very quickly once it recieves a trigger - far faster than a human user), and you have "-s" and "-h" - slow and human - optiond for the send command if you need them.

i) If your program stutters (goes one protocol exchange every 10 seconds), it's probably got out of sync and the expected strings are not being received - so it's timing out.

j) Remember the log_user command which lets you add a debugging trace onto the screen (other options too)

k) You can control multiple spawned processes if you manage the spawn_id, and you can wait on multiple processes using the -i option to expect.

And finally, buy a hard hat to protet yourself against brickbats that I EXPECT your colleagues will throw at you when they hear all the dreadful puns you unintentially drop.

We run Tcl courses that include Expect - there's a public course several times a year, and private courses can be arranged too. In practise, the Expect element is either vital (to around 30% of delegates) or of little interest (around 70%) and we tailor the courses as need be for the particular groups, running extra sessions on the public courses as appropriate. We're also happy (please email) to provide help / assistance / support / consultancy days on Expect.
(written 2007-05-02, updated 2007-05-03)

Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
T242 - Tcl/Tk - More on Expect
  [435] Expect for Windows - (2005-09-04)
  [1411] Buffering of inputs to expect, and match order - (2007-10-27)
  [1475] Tcl/Tk - updating your display while tasks are running - (2007-12-16)
  [1531] Expecting a item from a list of possibles - (2008-02-04)
  [2475] Quick easy and dangerous - automated logins via Tcl / Expect - (2009-10-24)
  [3009] Expect in Perl - a short explanation and a practical example - (2010-10-22)
  [3448] Checking all the systems on a subnet, using Expect and Tk - (2011-09-18)

T212 - Tcl/Tk - Expect Processes
  [287] Checking that all our servers are up and accessible - (2005-04-22)
  [675] Adding PHP tags to an old cgi program - (2006-04-08)
  [1785] What is running on your network? (tcl and expect) - (2008-09-04)
  [2474] Using Tcl and Expect to automate repetitive jobs - (2009-10-24)
  [2489] Parallel Pinging, using Python Threads or Expect spawn lists - (2009-11-02)
  [4678] Expect with Ruby - a training example to get you started - (2016-05-18)

T211 - Tcl/Tk - What is Expect? Why use it?
  [286] Automating regular manual procedures - (2005-04-21)
  [1174] Installing Tcl and Expect on Solaris 10 - a checklist - (2007-05-02)
  [1409] What is Expect? - (2007-10-26)
  [1469] Curley brackets v double quotes - Tcl, Tk, Expect - (2007-12-12)
  [1602] Automating processes through Expect - (2008-04-05)
  [3286] Should we cover expect and/or Tk on our public Tcl courses? - (2011-05-11)
  [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)
  [4405] Backup procedures - via backup server - (2015-01-24)

Back to
May day 2007 in pictures
Previous and next
Horse's mouth home
Forward to
Installing Tcl and Expect on Solaris 10 - a checklist
Some other Articles
Sorting out for a site map
A pu that got me into trouble
Local elections - choosing who to vote for
Cheat Sheet / Check list for Expect maintainers
May day 2007 in pictures
Traffic light control for horses
Smoking, or no? The law insists we spell out the obvious
Emailing as HTML (Web Page) - PHP example
Moving out some of the web site bloat
4759 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., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/1173_.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb