ttymon - port monitor for terminal ports
/usr/lib/saf/ttymon -g [-d device] [-h] [-t timeout] [-
l ttylabel] [-p prompt] [-m modules] [-T termtype]
ttymon is a STREAMS-based TTY port monitor. Its function is
to monitor ports, to set terminal modes, baud rates, and
line disciplines for the ports, and to connect users or
applications to services associated with the ports. Nor-
mally, ttymon is configured to run under the Service Access
Controller, sac(1M), as part of the Service Access Facility
(SAF). It is configured using the sacadm(1M) command. Each
instance of ttymon can monitor multiple ports. The ports
monitored by an instance of ttymon are specified in the port
monitor's administrative file. The administrative file is
configured using the pmadm(1M) and ttyadm(1M) commands. When
an instance of ttymon is invoked by the sac command, it
starts to monitor its ports. For each port, ttymon first
initializes the line disciplines, if they are specified, and
the speed and terminal settings. For ports with entries in
/etc/logindevperm, device owner, group and permissions are
set. (See logindevperm(4).) The values used for initializa-
tion are taken from the appropriate entry in the TTY set-
tings file. This file is maintained by the sttydefs(1M) com-
mand. Default line disciplines on ports are usually set up
by the autopush(1M) command of the Autopush Facility.
ttymon then writes the prompt and waits for user input. If
the user indicates that the speed is inappropriate by press-
ing the BREAK key, ttymon tries the next speed and writes
the prompt again. When valid input is received, ttymon
interprets the per-service configuration file for the port,
if one exists, creates a utmpx entry if required (see
utmpx(4)), establishes the service environment, and then
invokes the service associated with the port. Valid input
consists of a string of at least one non-newline character,
terminated by a carriage return. After the service ter-
minates, ttymon cleans up the utmpx entry, if one exists,
and returns the port to its initial state.
If autobaud is enabled for a port, ttymon will try to deter-
mine the baud rate on the port automatically. Users must
enter a carriage return before ttymon can recognize the baud
rate and print the prompt. Currently, the baud rates that
can be determined by autobaud are 110, 1200, 2400, 4800, and
If a port is configured as a bidirectional port, ttymon will
allow users to connect to a service, and, if the port is
free, will allow uucico(1M), cu(1C), or ct(1C) to use it for
dialing out. If a port is bidirectional, ttymon will wait to
read a character before it prints a prompt.
If the connect-on-carrier flag is set for a port, ttymon
will immediately invoke the port's associated service when a
connection request is received. The prompt message will not
If a port is disabled, ttymon will not start any service on
that port. If a disabled message is specified, ttymon will
send out the disabled message when a connection request is
received. If ttymon is disabled, all ports under that
instance of ttymon will also be disabled.
The service ttymon invokes for a port is specified in the
ttymon administrative file. ttymon will scan the character
string giving the service to be invoked for this port, look-
ing for a %d or a %% two-character sequence. If %d is found,
ttymon will modify the service command to be executed by
replacing those two characters by the full path name of this
port (the device name). If %% is found, they will be
replaced by a single %. When the service is invoked, file
descriptor 0, 1, and 2 are opened to the port device for
reading and writing. The service is invoked with the user
ID, group ID and current home directory set to that of the
user name under which the service was registered with
ttymon. Two environment variables, HOME and TTYPROMPT, are
added to the service's environment by ttymon. HOME is set to
the home directory of the user name under which the service
is invoked. TTYPROMPT is set to the prompt string configured
for the service on the port. This is provided so that a ser-
vice invoked by ttymon has a means of determining if a
prompt was actually issued by ttymon and, if so, what that
prompt actually was.
See ttyadm(1M) for options that can be set for ports moni-
tored by ttymon under the Service Access Controller.
ttymon uses pam(3PAM) for session management. The PAM con-
figuration policy, listed through /etc/pam.conf, specifies
the modules to be used for ttymon. Here is a partial
pam.conf file with entries for ttymon using the UNIX session
ttymon session required /usr/lib/security/pam_unix.so.1
If there are no entries for the ttymon service, then the
entries for the "other" service will be used.
-g A special invocation of ttymon is provided with the -g
option. This form of the command should only be called
by applications that need to set the correct baud
rate and terminal settings on a port and then connect
to login service, but that cannot be pre-configured
under the SAC. The following combinations of options
can be used with -g:
device is the full path name of the port to which
ttymon is to attach. If this option is not specified,
file descriptor 0 must be set up by the invoking pro-
cess to a TTY port.
-h If the -h flag is not set, ttymon will force a hangup
on the line by setting the speed to zero before set-
ting the speed to the default or specified speed.
ttylabel is a link to a speed and TTY definition in
the ttydefs file. This definition tells ttymon at
what speed to run initially, what the initial TTY set-
tings are, and what speed to try next if the user
indicates that the speed is inappropriate by pressing
the BREAK key. The default speed is 9600 baud.
When initializing the port, ttymon will pop all
modules on the port, and then push modules in the
order specified. modules is a comma-separated list of
pushable modules. Default modules on the ports are
usually set up by the Autopush Facility.
Allows the user to specify a prompt string. The
default prompt is Login: .
Specifies that ttymon should exit if no one types any-
thing in timeout seconds after the prompt is sent.
Sets the TERM environment variable to termtype.
If any of the LC_* variables ( LC_CTYPE, LC_MESSAGES,
LC_TIME, LC_COLLATE, LC_NUMERIC, and LC_MONETARY ) (see
environ(5)) are not set in the environment, the operational
behavior of ttymon for each corresponding locale category is
determined by the value of the LANG environment variable.
If LC_ALL is set, its contents are used to override both the
LANG and the other LC_* variables. If none of the above
variables is set in the environment, the "C" (U.S. style)
locale determines how ttymon behaves.
Determines how ttymon handles characters. When
LC_CTYPE is set to a valid value, ttymon can
display and handle text and filenames containing
valid characters for that locale.
ttymon can display and handle Extended Unix
Code (EUC) characters where any individual char-
acter can be 1, 2, or 3 bytes wide. ttymon can
also handle EUC characters of 1, 2, or more
column widths. In the "C" locale, only charac-
ters from ISO 8859-1 are valid.
See attributes(5) for descriptions of the following attri-
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| Availability | SUNWcsu |
ct(1C), cu(1C), autopush(1M), pmadm(1M), sac(1M),
sacadm(1M), sttydefs(1M), ttyadm(1M), uucico(1M), pam(3PAM),
logindevperm(4), pam.conf(4), utmpx(4), attributes(5),
environ(5), pam_authtok_check(5), pam_authtok_get(5),
pam_authtok_store(5), pam_dhkeys(5), pam_passwd_auth(5),
pam_unix(5), pam_unix_account(5), pam_unix_auth(5),
System Administration Guide: Basic Administration
If a port is monitored by more than one ttymon, it is possi-
ble for the ttymons to send out prompt messages in such a
way that they compete for input.
The pam_unix(5) module might not be supported in a future
release. Similar functionality is provided by
pam_authtok_store(5), pam_dhkeys(5), pam_passwd_auth(5),
pam_unix_account(5), pam_unix_auth(5), and
Man(1) output converted with