DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

kibitz(1)




KIBITZ(1)                USER COMMANDS                  KIBITZ(1)


NAME

     kibitz - allow two people to interact with one shell


SYNOPSIS

     kibitz [ kibitz-args ] user [ program program-args... ]
     kibitz [ kibitz-args ] user@host [ program program-args... ]


INTRODUCTION

     kibitz allows two (or more)  people  to  interact  with  one
     shell (or any arbitrary program).  Uses include:

          o   A novice user can ask  an  expert  user  for  help.
              Using  kibitz,  the expert can see what the user is
              doing, and offer advice or show how to do it right.

          o   By running kibitz and then starting  a  full-screen
              editor,   people  may  carry  out  a  conversation,
              retaining the ability to scroll backwards, save the
              entire  conversation, or even edit it while in pro-
              gress.

          o   People can team up on games, document  editing,  or
              other  cooperative  tasks  where  each  person  has
              strengths  and  weaknesses  that   complement   one
              another.


USAGE

     To start kibitz, user1 runs kibitz with the argument of  the
     user to kibitz.  For example:

          kibitz user2

     kibitz starts a new shell (or another program, if  given  on
     the  command line), while prompting user2 to run kibitz.  If
     user2 runs kibitz as directed, the keystrokes of both  users
     become  the  input  of  the  shell.   Similarly,  both users
     receive the output from the shell.

     To terminate kibitz  it  suffices  to  terminate  the  shell
     itself.  For example, if either user types ^D (and the shell
     accepts this to be EOF), the shell  terminates  followed  by
     kibitz.

     Normally, all characters are passed uninterpreted.  However,
     if  the  escape  character (described when kibitz starts) is
     issued, the user may talk  directly  to  the  kibitz  inter-
     preter.   Any  Expect(1)  or  Tcl(3)  commands may be given.
     Also, job control may be used while in the interpreter,  to,
     for example, suspend or restart kibitz.

     Various processes can provide various effects.  For example,
     you can emulate a two-way write(1) session with the command:

                  Last change: 19 October 1994                  1

KIBITZ(1)                USER COMMANDS                  KIBITZ(1)

          kibitz user2 sleep 1000000


ARGUMENTS

     kibitz takes arguments, these should also  be  separated  by
     whitespace.

     The -noproc flag runs kibitz  with  no  process  underneath.
     Characters are passed to the other kibitz.  This is particu-
     larly useful for connecting multiple  interactive  processes
     together.   In  this mode, characters are not echoed back to
     the typist.

     -noescape disables the escape character.

     -escape char sets the escape character.  The default  escape
     character is ^].

     -silent turns off  informational  messages  describing  what
     kibitz is doing to initiate a connection.

     -tty ttyname defines the tty to which the invitation  should
     be sent.

     If you start kibitz to user2 on a  remote  computer,  kibitz
     performs  a  rlogin to the remote computer with your current
     username. The flag -proxy  username  causes  rlogin  to  use
     username  for  the remote login (e.g. if your account on the
     remote computer has a different  username).  If  the  -proxy
     flag  is  not  given, kibitz tries to determine your current
     username by (in that order) inspecting the environment vari-
     ables  USER  and  LOGNAME, then by using the commands whoami
     and logname.

     The arguments -noescape and -escape can  also  be  given  by
     user2 when prompted to run kibitz.


MORE THAN TWO USERS

     The current implementation of kibitz explicitly  understands
     only  two users, however, it is nonetheless possible to have
     a three (or more) -way kibitz, by kibitzing another  kibitz.
     For  example,  the  following  command  runs kibitz with the
     current user, user2, and user3:

          % kibitz user2 kibitz user3

     Additional users may  be  added  by  simply  appending  more
     "kibitz user" commands.

     The xkibitz script is similar to  kibitz  but  supports  the
     ability to add additional users (and drop them) dynamically.

                  Last change: 19 October 1994                  2

KIBITZ(1)                USER COMMANDS                  KIBITZ(1)


CAVEATS

     kibitz assumes the 2nd user has the same terminal  type  and
     size  as  the  1st  user.   If this assumption is incorrect,
     graphical programs may display oddly.

     kibitz handles character graphics, but  cannot  handle  bit-
     mapped graphics.  Thus,

          % xterm -e kibitz    will work
          % kibitz xterm       will not work

     However, you can get the effect of  the  latter  command  by
     using  xkibitz  (see  SEE ALSO below).  kibitz uses the same
     permissions as used by rlogin, rsh, etc.  Thus, you can only
     kibitz  to  users  at hosts for which you can rlogin.  Simi-
     larly, kibitz will prompt for a password on the remote  host
     if rlogin would.

     If you kibitz to users at remote hosts, kibitz needs to dis-
     tinguish  your  prompt from other things that may precede it
     during login.  (Ideally, the end of it is preferred but  any
     part  should  suffice.)   If you have an unusual prompt, set
     the environment variable EXPECT_PROMPT to an  egrep(1)-style
     regular  expression.   Brackets  should be preceded with one
     backslash in  ranges,  and  three  backslashes  for  literal
     brackets.  The default prompt r.e. is "($|%|#) ".

     kibitz requires the kibitz program on  both  hosts.   kibitz
     requires expect(1).

     By comparison, the xkibitz script uses the  X  authorization
     mechanism  for  inter-host communication so it does not need
     to login, recognize your prompt, or require  kibitz  on  the
     remote  host.  It does however need permission to access the
     other X servers.


BUGS

     An early version of Sun's tmpfs had a bug in it that  causes
     kibitz  to  blow up.  If kibitz reports "error flushing ...:
     Is a directory" ask Sun for patch #100174.

     If your Expect is not compiled with multiple-process support
     (i.e.,  you  do not have a working select or poll), you will
     not be able to run kibitz.


ENVIRONMENT

     The environment variable SHELL  is  used  to  determine  the
     shell  to start, if no other program is given on the command
     line.

     If the environment  variable  EXPECT_PROMPT  exists,  it  is
     taken  as a regular expression which matches the end of your

                  Last change: 19 October 1994                  3

KIBITZ(1)                USER COMMANDS                  KIBITZ(1)

     login prompt (but does not  otherwise  occur  while  logging
     in). See also CAVEATS above.

     If the environment variables USER or  LOGNAME  are  defined,
     they  are  used  to  determine  the  current user name for a
     kibitz to a remote computer. See description of  the  -proxy
     option in ARGUMENTS above.


SEE ALSO

     Tcl(3), libexpect(3), xkibitz(1)
     "Exploring  Expect:  A  Tcl-Based  Toolkit  for   Automating
     Interactive Programs" by Don Libes, O'Reilly and Associates,
     January 1995.
     "Kibitz   -   Connecting   Multiple   Interactive   Programs
     Together",  by  Don Libes, Software - Practice & Experience,
     John Wiley & Sons, West Sussex, England,  Vol.  23,  No.  5,
     May, 1993.


AUTHOR

     Don Libes, National Institute of Standards and Technology

     kibitz is in the public domain.  NIST and I would appreciate
     credit if this program or parts of it are used.

                  Last change: 19 October 1994                  4


Man(1) output converted with man2html