Google
 

Trailing-Edge - PDP-10 Archives - bb-d868e-bm_tops20_v41_2020_dist_1of2 - 4-1-documentation/telnet.manual
There are 5 other files named telnet.manual in the archive. Click here to see a list.
                     Telnet User Guide

User Telnet (hereafter called  Telnet)  provides  facilities  for
communicating  with host computers via the ARPA network utilizing
the TELNET protocol.   The  purpose  of  the  Telnet  program  is
threefold.  It converts various terminals connected to TENEX into
a standard type of terminal called  a  network  virtual  terminal
(NVT)  by  interposing  programs in the character streams between
the terminal keyboard and printer and the terminal  port  on  the
host  computer.   Secondly,  it  provides  information  about the
network to assist a user in establishing  connections.   Thirdly,
it multiplexes the terminal among several remote jobs.

Telnet Command-Interpreter

Instructions to the Telnet  program  are  given  via  the  Telnet
Command   Interpreter.    When   in  command  mode  (see  below),
characters typed on the user's terminal are read  by  the  Telnet
command  interpreter  and  decoded as commands to perform various
actions by Telnet.

The Telnet command interpreter  has  two  unique  features.   The
command  interpreter  will  refuse  to  hear anything it does not
understand.  With full-duplex terminals, this means that no  echo
will  appear for characters which are not valid successors of the
previous input.  In any case, the character is ignored and a bell
is  typed  out.   The input stream that has already been typed is
not forgotten however.  Therefore, it is only necessary  to  type
the correct character and not the complete command.  This feature
may be turned off with the "no fancy.command.interpret" command.

The other unique feature of the Telnet command interpreter is the
use  of  question  mark  to discover what the command interpreter
expects next.  Typing a "?" at any  time  in  command  mode  will
elicit  a  list  of  words  the command interpreter is expecting.
Thus, typing a "?" when nothing has been typed will yield a  list
of  all  possible  top-level commands.  Typing "co?" will yield a
list of all commands starting with "co".   Typing  "connection.to
?" will yield a list of possible arguments to the "connection.to"
command.

The command interpreter provides command  completion  whenever  a
terminator  is  typed  (full-duplex  terminals only) and an exact
match is achieved with some command or a unique initial substring
is   typed.   Command  completion  may  be  suppressed  with  the
"concise" command.  Terminators are space, comma,  alt-mode,  and
carriage return.  Terminators are often not distinguished and are
thus equivalent.  Where necessary, comma is used to separate list
items,  space  terminates  a  command  or  option and signals the
desire to specify more options, carriage return  ends  a  command
unless  more  information  is  necessary.  Altmode is the same as
space except that it will cause command completion in those modes
where it is normally suppressed.


Command/Remote-Mode

As mentioned above, characters typed on the terminal keyboard may
be used in two ways: either as commands to Telnet, or as input to
the remote host.  The choice is made  on  the  basis  of  whether
Telnet  is  in  remote  mode  or  command mode.  In command mode,
characters typed on the terminal keyboard are read by the  Telnet
command  interpreter  and  decoded as commands to perform various
actions.  TELNET is initially in command mode and will revert  to
command  mode whenever the Telnet escape character (see below) is
typed.

The opposite of command mode is remote  mode.   In  remote  mode,
characters  typed  on  the keyboard (with certain exceptions) are
not examined by Telnet at all, but are merely passed  on  to  the
remote  host computer.  Remote mode is normally entered after any
command is executed when  the  current  connection  exists.   The
"local.mode"  command  may be used to defeat this.  The effect of
the  "local.mode"  command  is  cancelled  by  the  "remote.mode"
command   or  by  the  "connection.to"  or  "retrieve.connection"
commands.


Escaping Back to Command Mode

At any  time,  typing  the  Telnet  escape  character  (initially
control-Z  (SUB))  will cause Telnet to stop whatever it is doing
and return to command mode.  Occasionally, a slight delay may  be
experienced due to the need to clean up whatever was happening at
the time.  Telnet announces the switch to  command  mode  by  the
appearance  of  a sharp sign "#" at the left margin.  Telnet also
indicates the transition out of command mode by the appearance of
another sharp sign followed by a new line.

WARNING: If you have control-Z anywhere in your programming,  you
should  change  your  escape  character  for Telnet to other than
control-Z to avoid mishaps.


Making-a-Connection

There are two ways to make a connection.   Typing  "connection.to
<host>  [<qualifiers>]"  or simply typing "<host> [<qualifiers>]"
will cause a connection attempt to be made.  If  successful,  the
connection  will  be said to be complete and the terminal will be
placed in remote mode.  If unsuccessful, the connection  will  be
said  to be "incomplete because ---" with a reason given; also if
the remote host is down, a line is typed telling why and for  how
long.   By  terminating  the  host name with a space, one or more
qualifiers may be specified.  Ordinarily  socket  1  is  assumed.
Thus  without  a  qualifier,  the  connection will be made to the
"logger" on the remote system.  By using an  octal  number  as  a
qualifier,   the  connection  will  be  made  to  the  socket  so
specified.  A set of names is available for specifying the socket
desired.   This  set  consists  of  names  for  all  the standard
sockets.


The "wait" qualifier may be used to camp-on the connection.  This
qualifier  causes  Telnet to repeat the attempt to connect in the
event of a failure until it finally succeeds.  An initial failure
causes  a message to that effect to be printed.  When the attempt
finally succeeds, bells are typed out to wake the user  up.   The
attempt  to  connect  may  be aborted by typing the Telnet escape
character.

The "load.settings.from..." qualifier  (possibly  qualified  with
"no")  may  be  used  to  cause  (inhibit)  the  mode flags to be
initialized from the mode  file.   When  inhibited,  the  current
modes are used.

The "name.for.connection" qualifier may be used to specify a name
for  this  connection  other  than the one assigned by Telnet.  A
name  for  the  connection  may  also  be  given  later  by   the
"name.for.current.connection" command.


Disconnecting

The "disconnect" command is used to close the current connection.
This will not necessarily log you out from the remote host so you
should  perform  the  logout  procedure  for  that  host   before
disconnecting.  The disconnect command takes an optional argument
specifying  the  name  of   a   particular   connection   to   be
disconnected.   See  multiple  connections  and  connection names
below.

In the event that  the  network  connections  are  severed  by  a
network  failure, the message "IO error for connection <name>" is
printed, the connection is disconnected, and  Telnet  reverts  to
command  mode.   This  may  happen  even if the error occurs on a
connection which is not current.  If the remote host initiates  a
disconnect,  a  message  to  that  effect is printed and the same
action is taken.

If the remote host on the  current  connection  stops  responding
when  input  is being sent, a line is typed, "Host not responding
on connection xxx." (In this case the connection  is  NOT  lost.)
When  the  remote  host  resumes operating, the user is informed:
"Service restored on connection xxx."


Echo-Control

Telnet allows several options concerned with echoing.  Echos  may
be  generated  by the terminal, by Telnet, or by the remote host.
Telnet determines if  the  terminal  is  generating  echoes  when
started  by  examining  the  mode  word  for  the  terminal.  The
"terminal.type.is" command may be used to change this.

If the terminal  is  echoing,  then  Telnet  will  do  everything
possible  to  cause  the  remote host to not generate echoes, and
Telnet will not generate echoes itself.  If the terminal  is  not
generating  echoes, then Telnet determines whether it should echo
or not by information in the mode file (if any) or by  the  "echo
remote"/"echo  local"  commands,  or by information sent from the
remote host.

Telnet keeps the remote host informed about how echoing is  being
done  and if the remote host is suitably equipped, it will follow
along.  If not, then the user will have to give commands  to  the
remote  host  to  achieve  the  proper echoing.  Telnet also will
respond to commands from the remote host concerning who should be
echoing.   If  Telnet  believes  the  terminal  is  doing its own
echoing, it will respond to any request from the remote  host  to
not echo by an "I'll echo" command.


Line-Buffering and End of Line Conventions

Telnet  provides  an  optional   line   buffer   for   use   with
line-oriented  operating systems.  In this mode, characters typed
in remote mode are stored in a local buffer up through an end  of
line.   Prior to the end of line, the currently buffered line may
be edited using control-A  (SOH)  or  control-H  (BS)  to  delete
characters,  control-X  (CAN) to delete everything, and control-R
(DC2) to retype the current contents.  Telnet always converts the
TENEX  EOL  into  the NVT EOL.  TENEX in turn converts a carriage
return into the TENEX EOL.  Thus typing a  carriage  return  will
cause  the buffered line to be transmitted.  Linefeed may also be
used to terminate a line.  In this  case,  the  transmitted  line
will end with only linefeed, not the NVT EOL.

Telnet provides an optional linefeed echo  for  carriage  return.
If  the  remote  host  provides  a  linefeed  also, then the echo
generated by Telnet  should  be  suppressed  with  the  "echo  no
linefeed.for.carriage.return"  command.   In  remote  echo  mode,
Telnet generates no echos whatsoever.  In this  mode,  all  echos
must be provided by the remote host.


Status-Commands

Several status commands are available for discovering facts about
the network.  None of these commands will affect the state of the
current connection.   The  status  commands  include  where.am.I,
status.of,   netstatus,   and  socket.map.   These  commands  are
summarized below.




Special-Characters

Several commands are available to send characters  which  do  not
appear  on  the  terminal.   "Code"  takes  an  octal (decimal if
precede by "D", hexadecimal if  preceded  by  "H")  argument  and
sends  the  character  with  that  code.   The word "code" may be
omitted and just the argument typed.  "Control" takes a character
argument  and  sends the corresponding control character (the low
order five bits of the character) is sent.  The "!break!" command
sends  the  NVT  break  character which is mapped by some systems
into the equivalent of the attention, quit  or  break  key  which
appears on some terminals.

To facilitate operation with systems requiring  frequent  use  of
special   characters   or   lower/upper  case  graphics  which  a
particular terminal may lack (e.g.  33 Teletypes  have  no  lower
case),  case  shift  characters  may  be  defined for upper/lower
character/lock shifts  and  characters  may  defined  which  will
translate  into  attention  or  break  (NVT  201),  and the synch
sequence.  The  "case.shift.prefix.for",  "attention.character=",
and  "synch.character="  commands  are available to independently
set each of these characters.  In addition, a  character  may  be
defined  ("quote.prefix" command) to be a single character quote.
The character following this character is always sent  regardless
of any special action it may otherwise have.

If possible, case shift characters will be used to  indicate  the
case  of  both  input and output.  Thus the case shift characters
may not be echoed when typed but rather before the output.

All special characters  are  listed  by  the  "current.modes.are"
command.  This includes the escape character and the clear output
buffer character.


Leaving-Telnet

To leave Telnet, it is first necessary to return to command  mode
by  typing the escape character.  This is because while in remote
mode all characters except the escape character are passed on  to
the  remote  host or modify characters passed to the remote host.
Once in command mode, you  may  return  to  the  EXEC  by  typing
control-C  (ETX) or by using the "quit" command.  Continuing from
the EXEC will resume with no loss.   The  "logout"  command  will
disconnect  from  any  remote job and logout your local job.  The
"exec" command will start up an inferior EXEC under Telnet.  From
this  inferior  EXEC, it is possible to perform assemblies or any
other task  involving  the  running  of  subsystems.   The  "run"
command allows an arbitrary program to be run in an inferior fork
of Telnet.  The "run" may be interrupted  by  the  Telnet  escape
character.


Multiple-Connections

Telnet provides a facility for  multiplexing  a  user's  terminal
among  several  remote  jobs  thus  allowing several simultaneous
activities.  This is done by giving a name for each connection as
it  is  created.   The  user may specify the name, or Telnet will
default the  name  to  a  number.   The  "retrieve.connection..."
command causes the named connection to be made current and remote
mode to be entered.  Non-current connections remain  active,  but
any  output  received  is  buffered  until  that connection again
becomes active.  Terminal input goes only to the currently active
connection.

Telnet may be made  to  announce  the  receipt  of  output  on  a
non-current  connection with the "signal.waiting.output" command;
it may also be caused to  hunt  for  and  switch  to  any  active
connection--     see     "wait.for.any.active.connection"     and
"auto.switch.to.active.connection" commands.

The name of the current connection may be  changed  after  it  is
established   by   means   of  the  "name.for.current.connection"
command.  The name so specified may be  up  to  6  characters  in
length and must be unique.


Typescript-File

Telnet provides a means of  saving  on  a  file  a  copy  of  the
typescript for a session.  This is useful for producing hard copy
of the session when using  a  scope  terminal  or  for  producing
documentation of procedures or demonstrations.  Telnet is started
with  no  typescript  file  assigned.   The  "typescript.to.file"
command  may  be used to assign one, either the default temporary
file TELNET.TYPESCRIPT;S in the LOGIN directory, or one named  by
the user.  The typescript consists of a nearly exact copy of what
appears on the terminal with the exception of that  which  occurs
during  the  execution  of the "exec" or "run" or "ddt" commands.
"Nearly" refers to slight differences in  the  spelling  of  file
names  in  certain  Telnet commands.  For privacy, the typescript
file is given a protection that allows no access  to  anyone  but
"self".


Diverting-Output

The output stream may be diverted to some  other  file  with  the
"divert.output.to.file"  command.  While diverting output, Telnet
sends all output to the indicated file and sends a  line  to  the
terminal  only  when the terminal's output buffer is empty.  Thus
the terminal monitors the transmission of the stream to the file.
The  diverted  output consists only of characters from the remote
host.  Telnet  commands  and  responses  do  not  appear  in  the
diverted  information.   This  mode is useful as a primitive file
transfer mechanism or to  allow  printing  of  large  amounts  of
terminal output to be done with the lineprinter.  It is cancelled
by "no divert.output ...".



Input-from-a-File

The input stream to a remote job may be taken from a file instead
of    the    local    terminal    by   means   of   the   command
"take.input.stream.from.file".  Telnet blocks terminal  input  to
the  connection current when the file is specified, and transmits
characters from the named file (echoing  as  usual  according  to
current  modes).   However,  input  to  other  connections and in
command mode is from the user's terminal.  When  the  given  file
reaches EOF the file is closed and released, and input reverts to
the terminal.  The user may also manually cancel  file  input  by
escaping  to  command  mode and giving "no take.input ...".  This
mode is useful for routine sequences performed in the remote job.
Note that a connection must be established and current when input
to it is diverted to a file.


              Telnet Command Summary


Connection.to <host> or host name

Performs ICP to connect  to  the  indicated  host.
Options   are  available  for  specifying  initial
connection socket name or number, and initializing
modes   from  the  mode  file  via  the  following
subcommands.  Note that if <host name> is used  as
a  command,  only the NAME of a SERVER host may be
given  (e.g.,  BBN-TENEX).    The   argument   for
"Connection.to"  may  be any host name or an octal
host number.


     <octal number>

     An ICP is performed to  connect  to  the
     indicated   service   socket.   Normally
     socket 1 is assumed.


     Logger

     Sets socket to 1.


     Wait

     The connection attempt is repeated until
     successful.


     Name.for.connection.is <name>

     Sets the name  for  this  connection  as
     specified.


     [no] load.settings

     Determines whether to use  current  mode
     settings  or  to  load new ones from the
     mode file.


Disconnect <cr>

Disconnects the current connection.  This will not
necessarily  log  you  out  from  the remote host.
Perform   the    necessary    operations    before
disconnecting.


Disconnect <name>

Disconnects  the  connection  with  the  specified
name.


Net.exec

Connects  to  BBN  socket  15600031  where-in  the
RSEXEC (Resource-Sharing Executive) is found.


Status.of <host>

Performs ICP with the indicated  host  and  prints
its status.


Echo.mode.is

Sets  echo  mode  according   to   the   following
subcommand.


     [no] remote

     Turns off echoes generated by Telnet and
     signals  the remote computer to generate
     echoes.  Some hosts are not yet equipped
     to  handle  this  signal and may require
     additional action to  cause  the  remote
     computer  to generate echoes.  If Telnet
     believes it  is  connected  to  a  local
     half-duplex  terminal,  it will complain
     about remote echoes but do it anyway.


     [no] local

     Turns on  Telnet  generated  echoes  and
     signal   the   remote  computer  to  not
     generate echoes.  Note that Telnet never
     generates   echoes   for   terminals  it
     believes have local echo of their own.


     [no] linefeed.for.carriage.return

     TENEX translates carriage return to EOL,
     Telnet  sends  the EOL as the TELNET EOL
     (i.e.  carriage  return-linefeed).   For
     some   systems,   the   TELNET   EOL  is
     translated into  carriage  return.   For
     these  systems,  the appropriate echo is
     carriage    return.     Other    systems
     translate  the  TELNET EOL into carriage
     return-linefeed.  For these systems  the
     appropriate     echo     is     carriage
     return-linefeed.  This subcommand causes
     the latter echo to be generated.


     [no] control.character.echo.for <list of
     characters>

     Turns on local echoes for the  indicated
     control   characters.    Normally   only
     control-G,J, and M (bell, linefeed,  and
     carriage return) are enabled.


Terminal.type.is

Allows the user to change Telnet's opinion of  his
terminal  according  to the following subcommands.
Each command may be preceded by the word  "no"  to
negate its meaning.


     Half-duplex

     Terminal generates its own echoes.


     Full-duplex

     Terminal  does  not  generate  its   own
     echoes.


     [no] lower.case

     The terminal has lower case characters.


Local.mode

If connected, this command  prevents  Telnet  from
returning to remote mode after each command.


Remote.mode

If connected, this command causes Telnet to return
to   remote  mode  after  each  command.   If  not
connected, it does nothing.


No

May appear before some commands to  reverse  their
action.


Current.modes.are

Prints  the  state  of  connection  terminal  mode
flags, and all special characters.


[no] character.mode

Causes each character typed to be  transmitted  as
it is typed.


[no] line.buffer

Causes Telnet to accumulate a line of text  before
transmitting.   A  line ends on linefeed or EOL or
altmode  (esc).   The  line  may  be  edited  with
control-A, X, and R.


[no] raise

Causes lower case letters  to  be  transmitted  as
their upper case equivalents.


[no] lower

Causes upper case letters  to  be  transmitted  as
their lower case equivalents.


[no] transparent.mode

Causes all characters to pass through  Telnet  and
TENEX  untouched.   This  is  needed  for  special
terminals  such  as  the   IMLAC   using   special
character stream protocols.


[no] case.shift.prefix.for

Allows the specification of the  four  case  shift
characters    according    the    following   four
subcommands.


     Lock.lower.case

     Same as the "Lower" command.  Subsequent
     upper  case  input  will be converted to
     lower case.


     Char.lower.case

     Converts the following letter  to  lower
     case.


     Lock.upper.case

     Same  as  "Raise"  command.   Subsequent
     lower  case  input  will be converted to
     upper case.


     Char.upper.case

     Converts  the  following  character   to
     upper case.


[no] unshift.prefix

Causes all following characters to  be  unshifted.
I.e.   undoes  both an upper case lock and a lower
case lock.


[no] quote.prefix

Causes the following character to  be  transmitted
without  regard to any special significance it may
have.


[no] synch.character

The specified character will be converted  to  the
TELNET  synch sequence.  The TELNET synch sequence
is used to cause the remote host examine its input
stream  to  the  current  point  for  any  special
characters  (interrupts,  attentions  etc.).   All
non-special may be thrown away.


[no] attention.character

The specified character will be converted  to  the
TELNET   break   or   attention  character.   This
character is equivalent to the attention, quit, or
break   key   on  certain  terminals  and  may  be
necessary for using  some  systems.   The  !Break!
command generates the same character.


Concise

Turns off  automatic  command  completion.   Saves
typeout at the expense of readability.


Verbose

The opposite of concise.


[no] fancy.command.interpret

Commands are checked character by character.  If a
character  does  not  fit,  it  is ignored and not
echoed (full duplex terminals only).


[no] divert.output.stream.to.file

Causes  all  subsequent  output  from  the  remote
computer to be written on the specified file.  Use
"No divert..." to stop this.


[no] take.input.stream.from.file

Causes subsequent input to the remote host on  the
current  connection  to be read from the specified
file; input to other connections  and  in  command
mode  is  still from the user's terminal.  File is
automatically closed and released at EOF; user may
force  this  by "No take.input...", after escaping
to command mode.


[no] typescript.to.file

A  record  of  the  session  is  kept  on  a  file
including  both  input and output.  This is useful
for providing hard copy with scope terminals.


     typescript.to.file <cr>

     The file kept is TELNET.TYPESCRIPT;S  in
     the LOGIN (not connected) directory.


     typescript.to.file <filename> <cr>

     The named file receives the typescript.


     no typescript.to.file

     The typescript file (if any)  is  closed
     and    released;   subsequent   terminal
     activity is not saved.


Escape.character=

The specified character becomes the Telnet  escape
character.    This   character  must  be  a  TENEX
interrupt character.  "?"  will  type  what  these
are.

WARNING: If you have anywhere in your  programming
a   control-Z   you   should  change  your  escape
character in TELNET to  other  than  control-Z  to
avoid mishaps.


Clear.output.character=

The specified character becomes the  clear  output
buffer character.  Typing this character generates
an interrupt  which  causes  the  terminal  output
buffer and any accumulated output to be cleared.


Help

Prints the file <SYSTEM>TELNET.HELP on the  user's
terminal.


Describe <identifier>

Looks up the given identifier in the Help file and
prints  the accompanying description; an efficient
way to read the Help text.  Type "describe  ?"  to
get  a  list  of  identifiers; command recognition
operates on input of identifier.


Netstatus

Runs <SUBSYS>NETSTAT.SAV.


Socket.map

Prints a list of all  current  connection  on  the
system.   Optional arguments may be used to select
a particular  host  and  a  particular  connection
state.


Run

Runs the specified  file.   Like  the  EXEC's  run
command.


Quit

Returns from Telnet to the superior fork  (usually
the EXEC).  May be continued with no loss.


Logout

Logs out the  local  job  (not  the  remote  one).
Requires confirmation with a carriage return.


Reset

Re-initializes  Telnet  producing  an  essentially
virgin copy.


Ddt

Enters ddt.  If  ddt  is  not  loaded,  this  will
result  in  an  unexpected  interrupt.  No harm is
done if this happens.


Exec

Starts up an inferior  EXEC  under  Telnet.   This
EXEC  may  be  used  like  an ordinary EXEC to run
subsystems etc  without  disturbing  any  existing
connections.   The  Telnet  escape  character will
return to Telnet however.


Code

Transmits the character specified by the argument.
The  argument is a taken as an octal number unless
preceded  by  "d"   for   decimal   or   "h"   for
hexadecimal.   The argument may be preceded by "o"
for octal.


The "code" command  argument  may  be  used  as  a
command  by  itself  and  will cause the indicated
code to be transmitted.


!break!

Transmits the TELNET break character.


!synch!

Transmits the TELNET synch sequence.  Occasionally
the  "!synch!"  command  will work where the synch
character will not since the command bypasses  the
buffering  which may interfere with the use of the
synch character.


Write.modes.for.host

Causes the current mode flags to be saved  on  the
<SYSTEM>TELNET.MODES   file  under  the  specified
host.  Requires write access to the  file  and  is
thus not available to ordinary users.


Retrieve.connection.under.name

Retrieves the connection  previously  saved  under
the specified name.


Wait.for.any.active.connection

Used with multiple connections  to  wait  for  and
switch  attention  to the next connection that has
any   output   waiting.    Useful   when   several
independent  tasks  are  being run and you wish to
know when one completes and switch to that task.


[no] auto.switch.to.active.connection

Used  to   switch   between   tasks   on   several
connections  which  may  each be inactive for long
periods.  If the current connection is inactive on
both  input  and  output  for  a  given  number of
minutes, Telnet will begin to hunt for  any  other
active  connection.   If and only if one is found,
that connection is made current.  The  "inactivity
time  constant"  may  be specified as any positive
integral number of minutes if the "auto.switch..."
command   is   terminated  by  a  space.   A  <cr>
terminator invokes the default value of 2 minutes.
"No auto.switch..." disables this feature (current
connection   remains   current   until    manually
changed.)


Where.am.I

Prints a summary of the local job,  system,  user,
terminal and the remote host and socket.


[no] Signal.waiting.output

Causes all  non-current  connections  to  print  a
message when output becomes available.


Host.names

Lists all current host  names  with  corresponding
octal host numbers.


List.connections

Lists the name, local socket,  foreign  host,  and
foreign socket of all connections.


Flush.host

Marks all connections to  the  specified  host  as
dead  and  sends  a  reset to that host.  Requires
wheel or operator special capability.


Comments

An initial semi-colon causes the remainder of  the
line to be ignored.  Useful for comments or typing
to links.