kibitz-allow two people to interact with one shell

发表于:2007-07-04来源:作者:点击数: 标签:
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 inte

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

kibitzallows two (or more) people to interact with one shell (or any arbitraryprogram). Uses include:
    ·
  • A novice user can ask an expert user for help. Using kibitz, the expert can see what the user is doing, and offer adviceor show how to do it right.
  • ·
  • By running kibitz and then starting a full-screeneditor, people may carry out a conversation, retaining the ability to scrollbackwards, save the entire conversation, or even edit it while in progress.
  • ·
  • People can team up on games, document editing, or other cooperative taskswhere each person has strengths and weaknesses that complement one another.

Usage

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

   kibitz user2

kibitz starts a new shell (or another program, if given on the commandline), 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 sufficesto terminate the shell itself. For example, if either user types ^D (andthe shell aclearcase/" target="_blank" >ccepts this to be EOF), the shell terminates followed by kibitz.

Normally, all characters are passed uninterpreted. However, if the escapecharacter (described when kibitz starts) is issued, the user may talk directlyto the kibitz interpreter. 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:

   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 arepassed to the other kibitz. This is particularly useful for connecting multipleinteractive processes together. In this mode, characters are not echoedback to the typist.

-noescape disables the escape character.

-escape charsets the escape character. The default escape character is ^].

-silent turnsoff informational messages describing what kibitz is doing to initiatea connection.

-tty ttyname defines the tty to which the invitation shouldbe sent.

If you start kibitz to user2 on a remote computer, kibitz performsa rlogin to the remote computer with your current username. The flag -proxyusername causes rlogin to use username for the remote login (e.g. if youraccount on the remote computer has a different username). If the -proxyflag is not given, kibitz tries to determine your current username by (inthat order) inspecting the environment variables USER and LOGNAME, thenby using the commands whoami and logname.

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

More Than Two Users

Thecurrent implementation of kibitz explicitly understands only two users,however, it is n.netheless possible to have a three (or more) -way kibitz,by kibitzing another kibitz. For example, the following command runs kibitzwith 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 abilityto add additional users (and drop them) dynamically.

Caveats

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

kibitz handlescharacter graphics, but cannot handle bitmapped 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 canrlogin. Similarly, kibitz will prompt for a password on the remote hostif rlogin would.

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

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

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

Bugs

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

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

Environment

The environmentvariable SHELL is used to determine the shell to start, if no other programis given on the command line.

If the environment variable EXPECT_PROMPTexists, it is taken as a regular expression which matches the end of yourlogin prompt (but does not otherwise occur while logging in). See also CAVEATSabove.

If the environment variables USER or LOGNAME are defined, they areused 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 appreciatecredit if this program or parts of it are used.


Table of Contents

  • Name
  • Synopsis
  • Introduction
  • Usage
  • Arguments
  • More Than Two Users
  • Caveats
  • Bugs
  • Environment
  • See Also
  • Author

原文转自:http://www.ltesting.net