Home Page Icon
Home Page
Table of Contents for
Cover
Close
Cover
by Don Libes
Exploring Expect
Exploring Expect
Dedication
A Note Regarding Supplemental Files
Preface
Expect—Why another tool?
Tcl—A Little History
Acknowledgments
We’d Like to Hear From You
How To Read This Book
Notational Conventions
Exercises
1. Intro—What Is Expect?
Ouch, Those Programs Are Painful!
A Very Brief Overview
A First Script—dialback
Total Automation
Testing
Differing Behavior When Running Non-Interactively
Partial Automation
Dangerous, Unfriendly, Or Otherwise Unlikable User Interfaces
Graphical Applications
A Little More About Tcl
Job Control
Background Processes
Using Expect With Other Programs
Using Expect On UNIX
Using Expect On Other Operating Systems
Using Expect In Real Applications
Using Expect In Commercial Applications—Legalese
Obtaining Expect and the Examples
Expect And Tcl Resources
Important Reading Material
Other Books
Other Online Documentation
Support
Exercises
2. Tcl—Introduction And Overview
Everything Is A String
Quoting Conventions
Return Values
Puts
Expressions
Braces—Deferring Evaluation
Control Structures
The while Command
The incr Command
The for Command
The if Command
The switch Command
Continuation Lines
The break And continue Commands
The proc And return Commands
The source Command
More On Expressions
Lists
Selecting Elements Of Lists
Varying Argument Lists
Lists Of Lists
Creating Lists
The list And concat Commands
Building Up Lists With The lappend Command
The linsert Command
The lreplace Command
The lsearch Command
The lsort Command
The split And join Commands
More Ways To Manipulate Strings
The scan And format Commands
The string Command
The append Command
Arrays
Indirect References
Variable Information
Array Information
Unsetting Variables
Tracing Variables
Handling Errors
Causing Errors
Evaluating Lists As Commands
Passing By Reference
Evaluating Commands In Other Scopes
Working With Files
File I/O
File Name Matching
Setting And Getting The Current Directory
File Name Manipulation
File Information
Executing UNIX Commands
Environment Variables
Handling Unknown Commands
Libraries
Is There More To Tcl?
Exercises
3. Getting Started With Expect
The send Command
The expect Command
Anchoring
What Happens When Input Does Not Match
Pattern-Action Pairs
Example—Timed Reads In The Shell
The spawn Command
The interact Command
Example—Anonymous ftp
Exercises
4. Glob Patterns And Other Basics
The * Wildcard
* At The Beginning Of A Pattern Is Rarely Useful
* At The End Of A Pattern Can Be Tricky
More Glob Patterns
Backslashes
Handling Timeout
Handling End Of File (eof)
Hints On The spawn Command
Back To Eof
The close Command
Programs That Ignore Eof
The wait Command
Exercises
5. Regular Expressions
Regular Expressions—A Quick Start
Identifying Regular Expressions And Glob Patterns
Using Parentheses To Override Precedence
Using Parentheses For Feedback
More On The timed–read Script
Pattern Matching Strategy
Nested Parentheses
Always Count Parentheses Even Inside Of Alternatives
Example—The Return Value From A Remote Shell
Matching Customized Prompts
Example—A Smart Remote Login Script
What Else Gets Stored In expect_out
More On Anchoring
Exercises
6. Patterns, Actions, And Limits
Matching Anything But
Really Complex Patterns
Really Simple Patterns
Matching One Line And Only One Line
Tcl’s string match Command
Tcl’s regexp Command
Tcl’s regsub Command
Ignoring Case
All Those Other String Functions Are Handy, Too
Actions That Affect Control Flow
Example—rogue
Character Graphics
More Actions That Affect Control Flow
Matching Multiple Times
Recognizing Prompts (Yet Again)
Speed Is On Your Side
Controlling The Limits Of Pattern Matching Input
The full_buffer Keyword
Double Buffering
Perpetual Buffering
The Politics Of Patterns
Expecting A Null Character
Parity
Length Limits
Comments In expect Commands
Restrictions On expect Arguments
eval—Good, Bad, And Ugly
Exercises
7. Debugging Patterns And Controlling Output
Pattern Debugging
Enabling Internal Diagnostics
Logging Internal Diagnostics
Disabling Normal Program Output
The log_user Command
Example—su2
Recording All Expect Output
Sending Messages To The Log
About File Names
Log And Diagnostic State
Exercises
8. Handling A Process And A User
The send_user Command
The send_error Command
The expect_user Command
Dealing With Programs That Reprompt
Dealing With Programs That Miss Input
Sleeping
Line Versus Character-Oriented And Other Terminal Modes
Echoing
Prompting For A Password On Behalf Of A Program
Security And Insecurity
Securing Scripts By File Protection
Securing Scripts By Host Protection
Resetting The Terminal Upon Exit
More On The stty Command
The system Command
Redirecting The Standard Input Or Output
The expect_tty Command
The send_tty Command
Exercises
9. The Expect Program
Expect—Just Another Program
Invoking Scripts Without Saying “expect”
Rewriting The #! Line
The .exp Extension
The—And Other Flags
The —c Flag
The -f Flag
Writing The #! Line
The −i Flag
The -n And -N Flags
The -d Flag
The -D Flag
The -b Flag
The - Flag
The interpreter Command
The Terminal Mode During The interpreter Command
The interpreter Prompt
Changing The Prompt—prompt1 And prompt2
Causing The interpreter Command To Return
^D
Using interpreter In Production Scripts
Exercises
10. Handling Multiple Processes
The spawn_id Variable
Example—chess Versus chess
Example—Automating The write Command
How exp_continue Affects spawn_id
The Value Of spawn_id Affects Many Commands
Symbolic Spawn Ids
Job Control
Procedures Introduce New Scopes
How Expect Writes Variables In Different Scopes
Predefined Spawn Ids
Exercises
11. Handling Multiple Processes Simultaneously
Implicit Versus Explicit Spawn Ids
Waiting From Multiple Processes Simultaneously
Example—Answerback
Which Pattern Goes With Which Spawn Id
Which Spawn Id Matched
Spawn Id Lists
Example—Connecting Together Two Users To An Application
Example—Timing All Commands
Matching Any Spawn Id Already Listed
The expect_before And expect_after Commands
How Long Are expect_before And expect_after In Effect?
Using expect_before And expect_after With The Currently Spawned Process—DANGER
Undoing The Effects Of expect_before And expect_after
Information On The Current expect_before And expect_after Patterns
expect_before And expect_after Actions
Indirect Spawn Ids
Indirect Spawn Ids—Are They Really That Useful?
Exercises
12. Send
Implicit Versus Explicit Spawn Ids
Sending To Multiple Processes
Sending Without Echoing
Sending To Programs In Cooked Mode
Sending Slowly
Sending Humanly
Sending Nulls
Sending Breaks
Sending Strings That Look Like Flags
Sending Character Graphics
Comparing send To puts
Exercises
13. Spawn
The Search Path
Philosophy--Processes Are Smart
Treating Files As Spawned Processes
Opening Ttys
Bugs And Workarounds
Process Pipelines And Ptys
Automating xterm
Checking For Errors From spawn
spawn -noecho
Example—unbuffer
Obtaining Console Output
Setting Pty Modes From spawn
Hung Ptys
Restrictions On Spawning Multiple Processes
Getting The Process Id From A Spawn Id
Using File I/O Commands On Spawned Processes
Exercises
14. Signals
Signals
Signals In Spawned Processes
Notes On Specific Signals
SIGINT—Software Interrupt Signal
SIGTERM—Software Termination Signal
SIGQUIT—Quit Signal
SIGKILL—Kill Signal
SIGCHLD—Child Termination Signal
SIGHUP—Hangup Signal
SIGPIPE—Broken Pipe Signal
SIGWINCH—Window Size Change Signal
SIGTSTP—Terminal-Generated Stop SignalSIGSTOP—Kernel-Generated Stop SignalSIGCONT—Continue Signal
SIGUSR1 And SIGUSR2—User-Defined Signals
Other Signals
When And Where Signals Are Evaluated
Avoiding Problems Caused By Signal Handlers
Overriding The Original Return Value
Using A Different Interpreter To Process Signals
Exit Handling
Exercises
15. Interact
The interact Command
Simple Patterns
Exact Matching
Matching Patterns From The Spawned Process
Regular Expressions
What Happens To Things That Do Not Match
More Detail On Matching
Echoing
Avoiding Echoing
Giving Feedback Without -echo
Telling The User About New Features
Sending Characters While Pattern Matching
The continue And break Actions
The return Action
The Default Action
Detecting End-Of-File
Matching A Null Character
Timing Out
More On Terminal Modes (Or The -reset Flag)
Example—Preventing Bad Commands
Exercises
16. Interacting With Multiple Processes
Connecting To A Process Other Than The Currently Spawned Process
Connecting To A Process Instead Of The User
Example—rz And sz Over rlogin
Redirecting Input And Output
Default Input And Output
Controlling Multiple Processes—kibitz
How kibitz Works
Combining Spawn Ids In A Single -input Or -output
Which Spawn Id Matched
Indirect Spawn Ids
An Extended Example—xkibitz
Exercises
17. Background Processing
Putting Expect In The Background
Running Expect Without A Controlling Terminal
Disconnecting The Controlling Terminal
The fork Command
The disconnect Command
Reconnecting
Using kibitz From Other Expect Scripts
Mailing From Expect
A Manager For Disconnected Processes—dislocate
Expect As A Daemon
Example—Automating Gopher and Mosaic telnet Connections
Telling The System About Your Daemon
Exercises
18. Debugging Scripts
Tracing
Logging
Command Tracing
Variable Tracing
Example—Logging By Tracing
UNIX System Call Tracing
Tk And tkinspect
Traditional Debugging
Debugger Command Overview And Philosophy
Stepping Over Procedure Calls
Stepping Into Procedure Calls
Where Am I
The Current Scope
Moving Up And Down The Stack
Returning From A Procedure
Continuing Execution
Defining Breakpoints
Breakpoint By Line Number And Filename
Breakpoint By Expression
Breakpoint By Pattern Match
Breakpoint Actions
Limitations Of Breakpoint Actions And Interactive Commands
General Form Of Breakpoints
Listing Breakpoints
Deleting Breakpoints
Help
Changing Program Behavior
Changing Debugger Behavior
Exercises
19. Expect + Tk = Expectk
Tk—A Brief Technical Overview
Widgets
Other Widgets And Naming Conventions
Displaying Widgets
Bindings And Events
The Event Loop
Expectk
Expectk Scripts
The send Command
An Extended Example—tkpasswd
The expect Command And The Tk Event Loop
The expect_background Command
Multiple Spawn Ids In expect_background
Background Actions
Example—A Dumb Terminal Emulator
Example—A Smarter Terminal Emulator
Using The Terminal Emulator For Testing And Automation
The term_expect Procedure
Exercises
20. Extended Examples
Encrypting A Directory
File Transfer Over telnet
You Have Unread News—tknewsbiff
The tknewsbiff Script
Exercises
21. Expect, C, And C++
Overview
Linking
Include Files
Ptys And Processes
Allocating Your Own Pty
Closing The Connection To The Spawned Process
Expect Commands
Regular Expression Patterns
Caching Regular Expressions
Exact Matching
Matching A Null
What Characters Matched
When The Number Of Patterns Is Not Known In Advance
Expecting From Streams
Running In The Background
Handling Multiple Inputs And More On Timeouts
Output And Debugging Miscellany
Pty Trapping
Exercises
22. Expect As Just Another Tcl Extension
Adding Expect To Another Tcl-based Program
Differences Between Expect And The Expect Extension In Another Program
Adding Extensions To Expect
Adding Extensions To Expectk
Creating Script-less Expect Programs
Functions And Variables In The Expect Extension
Shared Variables
Non-Shared Variables and Functions
Exercises
23. Miscellaneous
Random Numbers
Example—Generating Random Passwords
The Expect Library
Expect Versions
Timestamps
The time Command
Exercises
A. Appendix—Commands and Variables
Commands And Flags
Variables
Index
About the Author
Copyright
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Next
Next Chapter
Exploring Expect
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset