Computer Science
GETTY(1m) GETTY(1m)
NAME
getty - sets terminal mode, speed, and line discipline
SYNOPSIS
/etc/getty [-d defaults_file] [-a] [-h] [-r delay] [-t
timeout] [-w waitfor] line [speed [type [lined]]]
/etc/getty -c gettydefs_file
DESCRIPTION
Getty is the second of the three programs (init(1m),
getty(1m), and login(1m)), used by the system to allow
users to login. Getty is invoked by init(1m) to:
1. Open tty lines and set their modes.
2. Print the login prompt, and get the user's name.
3. Initiate a login process for the user.
The actual procedure that getty follows is described
below: Initially, getty parses its command line. If no
errors are found, getty scans the defaults file, normally
/etc/conf.getty, to determine certain runtime values
(/etc/conf.getty if compiled with FSSTND option). The
values in the defaults file (whose compiled-in name can be
altered with the optional -d defaults_file argument) take
precedence to those on the command line. Getty then opens
the line for reading and writing, and disables stdio
buffering. If an initialization was specified, it is per-
formed (see LINE INITIALIZATION).
After the initialization, the line is closed and reopened.
This time, however, the line is opened in blocking mode so
that the device is not tied up. Detection of the carrier
signal will allow the line to be opened.
Next, getty types the issue (or login banner, usually from
/etc/issue) and login prompt. Finally, getty reads the
user's login name and invokes login(1m) with the user's
name as an argument. While reading the name, getty
attempts to adapt the system to the speed of the terminal
being used, and also sets certain terminal parameters (see
termio(7)) to conform with the user's login procedure.
The tty device used by getty is determined by the line
argument. Getty uses the string /dev/line as the name of
the device to attach itself to. Unless getty is invoked
with the -h flag (or HANGUP=NO is specified in the
defaults file), it will force a hangup on the line by set-
ting the speed to zero. Giving -r delay on the command
line (or using WAITCHAR=YES and DELAY=delay in the
defaults file) will cause getty to wait for a single char-
acter from the line, and then to wait delay seconds before
continuing. If no delay is desired, use -r0. Giving -w
waitfor on the command line (or using WAITFOR=waitfor in
the defaults file) will cause getty to wait for the speci-
fied string of characters from the line before continuing.
Giving -t timeout on the command line (or using TIME-
OUT=timeout in the defaults file) will cause getty to exit
if no user name is accepted within timeout seconds after
the login prompt is typed.
The speed argument is a label to a entry in the /etc/get-
tydefs file (see gettydefs(4)). This entry defines to
getty the initial speed (baud rate) and tty settings, the
login prompt to be used, the final speed and tty settings,
and a pointer to another entry to try should the user
indicate that the speed is not correct. This is done by
sending a <break> character (actually sequence). Under
certain conditions, a carriage-return will perform the
same function. This is usually the case when getty is set
to a higher speed than the modem or terminal. Getty scans
the gettydefs file sequentially looking for a matching
entry. If no speed was given or the entry cannot be
found, the first entry in the /etc/gettydefs file is used
as a default. In the event that the gettydefs file cannot
be accessed, there is a compiled-in default entry that is
used.
The type argument is a string which names the type of ter-
minal attached to the line. The type should be a valid
terminal name listed in the termcap(7) database. Getty
uses this value to determine how to clear the video dis-
play. It also sets the environment variable TERM to the
contents of this value.
The lined argument is a string describing the line disci-
pline to use on the line. The default is LDISC0.
As mentioned, getty types the login prompt and then reads
the user's login name. If a null character is received,
it is assumed to be the result of the user pressing the
<break> key or the carriage-return key to indicate the
speed is wrong. This causes getty to locate the next
speed in the series (defined in /etc/gettydefs).
The user's name is terminated by a new-line or car-
riage-return character. A carriage-return results in the
system being set to map those to new-lines (see ioctl(2)).
The user's name is scanned to see if it contains only
upper-case characters. If so, the system is set to map
any future upper-case characters into lower-case.
A check option is provided for testing the gettydefs file.
When getty is invoked with the -cgettydefs option, it
scans the named gettydefs file and prints out (to the
standard output) the values it sees. If any parsing
errors occur (due to errors in the syntax of the gettydefs
file), they are reported.
DEFAULTS FILE
During its startup, getty looks for the file
/etc/conf.getty.line, (or, if it cannot find that file,
then /etc/conf.getty), and if found, reads the contents
for lines of the form
NAME=value
This allows getty to have certain features configurable at
runtime, without recompiling. The recognized NAME
strings, and their corresponding values, follows:
SYSTEM=name
Sets the nodename value (displayed by @S -- see
PROMPT SUBSTITUTIONS) to name. The default is the
nodename value returned by the uname(3) call.
VERSION=string
Sets the value that is displayed by the @V parameter
(see PROMPT SUBSTITUTIONS) to string. If string
begins with a '/' character, it is assumed to be the
full pathname of a file, and @V is set to be the
contents of that file. The default is /proc/ver-
sion.
LOGIN=name
Sets the name of the login program to name. The
default is /bin/login (see login(1m)). If used,
name must be the full pathname of the program that
getty will execute instead of /bin/login. Note that
this program is called, as is /bin/login, the with
the user's name as its only argument.
INIT=string
If defined, string is an expect/send sequence that
is used to initialize the line before getty attempts
to use it. This string is in a form resembling that
used in the L.sys file of uucp(1). For more
details, see LINE INITIALIZATION. By default, no
initialization is done.
ISSUE=string
During startup, getty defaults to displaying, as an
issue or login banner, the contents of the
/etc/issue file. If ISSUE is defined to a string,
that string is typed instead. If string begins with
a '/' character, it is assumed to be the full path-
name of a file, and that file is used instead of
/etc/issue.
CLEAR=value
If value is NO, then getty will not attempt to clear
the video screen before typing the issue or login
prompts. The default is to clear the screen.
HANGUP=value
If value is NO, then getty will NOT hangup the line
during its startup. This is analogus to giving the
-h argument on the command line.
WAITCHAR=value
If value is YES, then getty will wait for a single
character from it's line before continuing. This is
useful for modem connections where the modem has CD
forced high at all times, to keep getty from end-
lessly chatting with the modem.
DELAY=seconds
Used in conjunction with WAITCHAR, this adds a time
delay of seconds after the character is accepted
before allowing getty to continue. Both WAITCHAR
and DELAY have the same effect as specifying -rdelay
on the command line. If WAITCHAR is given without a
DELAY, the result is equal to having said -r0 on the
command line. The default is to not wait for a
character.
TIMEOUT=number
As with the -t timeout command line argument, tells
getty to exit if no user name is accepted before the
number of seconds elapse after the login prompt is
typed. The default is to wait indefinetly for the
user name.
CONNECT=string
If defined, string should be an expect/send sequence
(like that for INIT) to direct getty in establishing
the connection. String may be defined as DEFAULT,
which will substitute the built-in string:
CONNECT\s\A\r\n
The \A escape marks the place where the digits show-
ing the speed will be seen. See CONNECTION AND
AUTOBAUDING for more details. The default is to not
perform a connection chat sequence.
WAITFOR=string
This parameter is similar to WAITCHAR, but defines a
string of characters to be waited for. Getty will
wait until string is received before issuing the
login prompt. This parameter is best used when com-
bined with CONNECT, as in this example:
WAITFOR=RING
CONNECT="" ATA\r CONNECT\s\A
This would cause getty to wait for the string RING,
then expect nothing, send ATA followed by a car-
riage-return, and then wait for a string such as
CONNECT 2400, in which case, getty would set itself
to 2400 baud. The default is not to wait for any
string of characters.
ALTLOCK=line
Uugetty uses this parameter to lock an alternate
device, in addition to the one it is attached to.
This is for those systems that have two different
device names that refer to the same physical port;
e.g. /dev/tty1A vs. /dev/tty1a, where one uses
modem control and the other doesn't. See the sec-
tion on UUGETTY for more details. The default is to
have no alternate lockfile.
ALTLINE=line
Getty uses this parameter to specify a different
device to use for handling modem initialization. If
the WAITFOR option is being used, WAITFOR will be
done on this line also. This is necessary for sys-
tems that exercise locking between two lines.
RINGBACK=value
If value is YES ringback callin is enabled. This is
used in conjunction with WAITFOR and CONNECT to
negotiate incoming calls. The default action is to
connect only if the line rings one to three times,
is hung up, and is called back within 60 seconds of
the first call. MINRBTIME and MAXRBTIME specify the
minimum and maximum time for the second call.
INTERRING specifies the maximum time between two
successive rings in the same call. MINRINGS and
MAXRINGS specify the minimum and maximum number of
rings for the first call.
SCHED=range1 range2 range3 ...
Getty uses this line to schedule times to allow
logins. Each range has the form DOW:HR:MIN-
DOW:HR:MIN. DOW is the day of the week. 0 = Sun-
day, 1 = Monday, ... 6 = Saturday. HR is the hour,
and MIN is the minute. If the current time falls
into one of these ranges, the INIT sequence (if any)
is sent and getty continues to run until the off
time. Otherwise, the OFF sequence is sent, and
getty sleeps until the on time.
OFF=string
This line is identical to the INIT line, except it
is only sent when the line is scheduled to be OFF.
FIDO=string
This line specifies the path to the FidoNet mailer
(usually ifcico). Undefined by default. When set-
ting up a FidoNet mailer, you should also set EMSI
to yes. When an incoming FidoNet call is received,
the string tsync or yoohoo is passed to the FidoNet
mailer as the only command line option if two TSYNC
or two YOOHOO sequences are received. If EMSI is
set to yes, the entire EMSI string (starting with
the first asterisk, and up to but not including the
final carraige return) is passed as the only command
line option.
EMSI=value
If set to yes, scan the input for FidoNet EMSI
sequences.
The name of the defaults file can be changed by specifying
-d defaults_file on the command line. If defaults_file
begins with a slash, it is assumed to be a complete path-
name of the defaults file to be used. Otherwise, it is
assumed to be a regular filename, causing getty to use the
pathname /etc/conf.defaults_file. or
/etc/conf.defaults_file if compiled with FSSTND compli-
ance.
PROMPT SUBSTITUTIONS
When getty is typing the issue or login banner (ususally
/etc/issue), or the login-prompt, it recognizes several
escape (quoted) characters. When one of these quoted
characters is found, its value is substituted in the out-
put produced by getty. Recognized escape characters are:
\\ Backslash (\).
\b Backspace (^H).
\c Placed at the end of a string, this prevents a
new-line from being typed after the string.
\f Formfeed (^L).
\n New-line (^J).
\r Carriage-return (^M).
\s A single space (' ').
\t Horizontal tab (^I).
\nnn Outputs the ASCII character whose decimal value is
nnn. If nnn begins with 0, the value is taken to be
in octal. If it begins with 0x, the value is taken
to be in hexidecimal.
In addition, a single backslash at the end of a line
causes the immediately following new-line to be ignored,
allowing continuation lines.
Also, certain @char parameters are recognized. Those
parameters, and the value that is substituted for them
are:
@B The current (evaluated at the time the @B is seen)
baud rate.
@D The current date, in MM/DD/YY .
@L The line to which getty is attached.
@S The system node name.
@T The current time, in HH:MM:SS (24-hour) .
@U The number of currently signed-on users. This is a
count of the number of entries in the /etc/utmp file
that have a non-null ut_name field.
@V The value of VERSION, as given in the defaults file.
To display a single '@' character, use either '\@' or
'@@'.
LINE INITIALIZATION
One of the greatest benefits (in the author's opinion, at
least) is the ability of getty to initialize its line
before use. This will most likely be done on lines with
modems, not terminals, although initializing terminals is
not out of the question.
Line initialization is performed just after the line is
opened and prior to handling the WAITCHAR and/or WAITFOR
options. Initialization is accomplished by placing an
INIT=string
line in the defaults file. String is a series of one or
more fields in the form
expect [ send [ expect [ send ] ] ... ]
This resembles the expect/send sequences used in the UUCP
L.sys file, with the following exception: A carriage
return is NOT appended automatically to sequences that are
'sent.' If you want a carriage-return sent, you must
explicitly show it, with '\r'.
Getty supports subfields in the expect field of the form
expect[-send-expect]...
as with UUCP. All the escape characters (those beginning
with a '\' character) listed in the PROMPT SUBSTITUTIONS
section are valid in the send and expect fields. In addi-
tion, the following escape characters are recognized:
\p Inserts a 1-second delay.
\d Inserts a 2-second delay.
\K Sends a .25-second Break.
\Tnnn Modifies the default timeout (usually 30 seconds) to
the value indicated by nnn. The value nnn may be
decimal, octal, or hexidecimal; see the usage of
\nnn in PROMPT SUBSTITUTIONS.
Note that for these additional escape characters, no
actual character is sent.
CONNECTION AND AUTOBAUDING
Getty will perform a chat sequence establish a proper con-
nection. The best use of this feature is to look for the
CONNECT message sent by a modem and set the line speed to
the number given in that message (e.g. CONNECT 2400).
The for the connect chat script is exactly the same as
that for the INIT script (see LINE INITIALIZATION), with
the following addition:
\A Marks the spot where the baud rate will be seen.
This mark will match any and all digits 0-9 at that
location in the script, and set it's speed to that
value, if possible.
Autobauding, therefore, is enabled by placing the 0
CONNECT=CONNECT\s\A
would match the string CONNECT 1200 and cause getty to set
it's baud rate to 1200, using the following steps:
1. Having matched the value 1200, getty will attempt to
find an entry with the label 1200 in the gettydefs
file. If a matching gettydefs entry is found, those
values are used. If there is no match, then
2. The gettydefs values currently in use are modified to
use the matched speed (e.g. 1200). However, if the
matched speed is invalid, then
3. Getty logs a warning message and resumes normal opera-
tion. This allows the practice of toggling through
linked entries in the gettydefs file to behave as
expected.
UUGETTY
Uugetty has identical behavior to getty, except that
uugetty is designed to create and use the lock files main-
tained by the UUCP family (uucp(1), cu(1) and others).
This prevents two or more processes from having conficting
use of a tty line.
When uugetty starts up, if it sees a lock file on the line
it intends to use, it will use the pid in the lock file to
see if there is an active process holding the lock. If
not, uugetty will remove the lock file and continue. If a
valid process is found, uugetty will sleep until that pro-
cess releases the lock and then it will exit, forcing
init(1m) to spawn a new uugetty. Once no conflicting pro-
cess is found, uugetty grabs the line by creating the lock
file itself before issuing the login prompt. This pre-
vents other processes from using the line.
Uugetty will normally only lock the name of the line it is
running on. On systems where there are two device names
referring to the same port (as is the case where one
device uses modem control while the other doesn't), place
a line of the form
ALTLOCK=line
line in the defaults file. For instance, if uugetty is on
/dev/tty1a, and you want to have it lock /dev/tty1A also,
use the line ALTLOCK=tty1A in the defaults file.
While waiting for carrier detect, Uugetty will check for
lockfiles every 30 seconds. If lockfiles are found,
uugetty will exit, and init will respawn another getty.
This allows the modem to be reinitialized after another
process has used the modem.
FILES
/etc/conf.getty[.line]
Contains the runtime configuration. Note
that uugetty uses
/etc/conf.uugetty[.line].
/etc/gettydefs Contains speed and tty settings to be used
by getty.
/etc/issue The default issue (or login banner).
/bin/login The default login program called after the
user's name is entered.
SEE ALSO
init(1m), login(1m), uucp(1), ioctl(2), uname(3), getty-
defs(5), utmp(5), termio(7)
AUTHOR
Getty_ps in its current evil form:
Kris Gleason <gleasokr@boulder.colorado.edu>
Original getty_ps:
Paul Sutcliffe, Jr. <paul@devon.lns.pa.us>
UUCP: ...!rutgers!devon!paul
Autobauding routines adapted from code submitted by
Mark Keating <...!utzoo!censor!markk>
Release 2.0.7h 2-Nov-95 1
Back to the index