autoexpect(1) - phpMan

Command: man perldoc info search(apropos)  


AUTOEXPECT(1)                        General Commands Manual                        AUTOEXPECT(1)



NAME
       autoexpect - generate an Expect script from watching a session

SYNOPSIS
       autoexpect [ args ] [ program args...  ]

INTRODUCTION
       autoexpect  watches you interacting with another program and creates an Expect script that
       reproduces your interactions.  For straightline scripts, autoexpect saves substantial time
       over  writing  scripts by hand.  Even if you are an Expect expert, you will find it conve-
       nient to use autoexpect to automate the more mindless parts of interactions.  It  is  much
       easier  to cut/paste hunks of autoexpect scripts together than to write them from scratch.
       And if you are a beginner, you may be able to get away with learning  nothing  more  about
       Expect than how to call autoexpect.

       The  simplest way to use autoexpect is to call it from the command line with no arguments.
       For example:

            % autoexpect

       By default, autoexpect spawns a shell for you.  Given a program name and arguments,  auto-
       expect spawns that program.  For example:

            % autoexpect ftp ftp.cme.nist.gov

       Once  your  spawned program is running, interact normally.  When you have exited the shell
       (or program that you specified), autoexpect will create a new script for you.  By default,
       autoexpect  writes the new script to "script.exp".  You can override this with the -f flag
       followed by a new script name.

       The following example runs "ftp ftp.cme.nist.gov" and stores the resulting  Expect  script
       in the file "nist".

            % autoexpect -f nist ftp ftp.cme.nist.gov

       It  is important to understand that autoexpect does not guarantee a working script because
       it necessarily has to guess about certain things -  and  occasionally  it  guesses  wrong.
       However, it is usually very easy to identify and fix these problems.  The typical problems
       are:

              o   Timing.  A surprisingly large number of programs (rn, ksh, zsh,  telnet,  etc.)
                  and  devices  (e.g.,  modems) ignore keystrokes that arrive "too quickly" after
                  prompts.  If you find your new script hanging up at  one  spot,  try  adding  a
                  short sleep just before the previous send.

                  You  can  force this behavior throughout by overriding the variable "force_con-
                  servative" near the beginning of the  generated  script.   This  "conservative"
                  mode  makes  autoexpect  automatically  pause  briefly  (one tenth of a second)
                  before sending each character.  This pacifies every program I know of.

                  This conservative mode is useful if you just want to quickly reassure  yourself
                  that  the  problem  is a timing one (or if you really don't care about how fast
                  the script runs).  This same mode can be forced  before  script  generation  by
                  using the -c flag.

                  Fortunately,  these timing spots are rare.  For example, telnet ignores charac-
                  ters only after entering its escape sequence.  Modems  only  ignore  characters
                  immediately  after  connecting  to  them  for  the  first time.  A few programs
                  exhibit this behavior all the time but typically have a switch to  disable  it.
                  For example, rn's -T flag disables this behavior.

                  The following example starts autoexpect in conservative mode.

                       autoexpect -c

                  The  -C  flag defines a key to toggle conservative mode.  The following example
                  starts autoexpect (in non-conservative mode) with ^L as the toggle.  (Note that
                  the ^L is entered literally - i.e., enter a real control-L).

                       autoexpect -C ^L

                  The  following  example  starts  autoexpect in conservative mode with ^L as the
                  toggle.

                       autoexpect -c -C ^L


              o   Echoing.  Many program echo characters.  For example, if you type "more"  to  a
                  shell, what autoexpect actually sees is:

                       you typed 'm',
                       computer typed 'm',
                       you typed 'o',
                       computer typed 'o',
                       you typed 'r',
                       computer typed 'r',
                       ...

                  Without  specific knowledge of the program, it is impossible to know if you are
                  waiting to see each character echoed before typing  the  next.   If  autoexpect
                  sees  characters  being echoed, it assumes that it can send them all as a group
                  rather than interleaving them the way they originally appeared.  This makes the
                  script  more  pleasant  to read.  However, it could conceivably be incorrect if
                  you really had to wait to see each character echoed.


              o   Change.  Autoexpect records every character from the interaction in the script.
                  This  is  desirable  because  it gives you the ability to make judgements about
                  what is important and what can be replaced with a pattern match.

                  On the other hand, if you use commands whose output differs from  run  to  run,
                  the  generated  scripts  are  not going to be correct.  For example, the "date"
                  command always produces different output.  So using the date command while run-
                  ning  autoexpect is a sure way to produce a script that will require editing in
                  order for it to work.

                  The -p flag puts autoexpect into "prompt mode".  In this mode, autoexpect  will
                  only  look  for  the  the  last  line  of program output - which is usually the
                  prompt.  This handles the date problem (see above) and most others.

                  The following example starts autoexpect in prompt mode.

                       autoexpect -p

                  The -P flag defines a key to toggle prompt mode.  The following example  starts
                  autoexpect  (in  non-prompt  mode)  with ^P as the toggle.  Note that the ^P is
                  entered literally - i.e., enter a real control-P.

                       autoexpect -P ^P

                  The following example starts autoexpect in prompt mode with ^P as the toggle.

                       autoexpect -p -P ^P


OTHER FLAGS
       The -quiet flag disables informational messages produced by autoexpect.

       The -Q flag names a quote character which can be used to enter characters that  autoexpect
       would otherwise consume because they are used as toggles.

       The following example shows a number of flags with quote used to provide a way of entering
       the toggles literally.

            autoexpect -P ^P -C ^L -Q ^Q


STYLE
       I don't know if there is a "style" for Expect programs but  autoexpect  should  definitely
       not  be  held  up  as any model of style.  For example, autoexpect uses features of Expect
       that are intended specifically for computer-generated scripting.  So don't try  to  faith-
       fully write scripts that appear as if they were generated by autoexpect.  This is not use-
       ful.

       On the other hand, autoexpect scripts do show some worthwhile things.   For  example,  you
       can see how any string must be quoted in order to use it in a Tcl script simply by running
       the strings through autoexpect.


SEE ALSO
       "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" by Don  Libes,
       O'Reilly and Associates, January 1995.

AUTHOR
       Don Libes, National Institute of Standards and Technology

       expect  and  autoexpect  are  in the public domain.  NIST and I would appreciate credit if
       these programs or parts of them are used.




                                           30 June 1995                             AUTOEXPECT(1)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2024-04-16 07:27 @3.143.168.172 CrawledBy claudebot
Valid XHTML 1.0!Valid CSS!