Training, Open Source computer languages
PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 
Search for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
What is Expect / a sample

Posted by admin (Graham Ellis), 7 October 2002
Expect is an extension to Tcl which allows you to automate processes such as telnet and FTP by "mimicing" the user's input in a terminal window.  You use the spawn command to spawn a telnet (or FTP, or whatever) process, you use send (or exp_send if you're also using Tk) to send some text as if it was typed, and then you wait for a specific input pattern to come back via the expect command.

Here's an example that does a remote ls listing; enter host computer name into an entry box, click on the "go" button, and you get a listing of all files in the trainee home directory on that system.

Code:
#!/usr/bin/expectk

proc getfiles {host} {
       spawn telnet
       log_user 0
       expect "telnet>"
       exp_send "open $host\r"
       expect {
               "login: " { }
               "Unable" {return "ERROR"}
               }
       exp_send "trainee\r"
       expect "sword: "
       exp_send "abc123\r"
       expect "\$ "
       exp_send "ls -1\r"
       expect "\$ "
       set got $expect_out(buffer)
       exp_send "exit"
       return $got
       }

set hostname "computer name"
entry .host -textvariable hostname

button .do -text go -command {
       set there [getfiles $hostname]
       .what delete 1.0 end
       .what insert end $there
       }

text .what -width 30 -height 40
pack .host .do .what




This page is a thread posted to the opentalk forum at www.opentalk.org.uk and archived here for reference. To jump to the archive index please follow this link.

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2014: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 899360 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho