PH(1L) PH(1L)
NAME
ph - CCSO Nameserver client (on-line phone book)
SYNOPSIS
ph [ -s server ] [ -p port ] [ -t type ] [
-f field1,field2,... ] [ -mMrRqbBTlLF ] query
ph [ -s server ] [ -p port ] [ -t type ] [
-f field1,field2,... ] [ -h topic ] [ -mMnNrRqbBTlLFcC
DESCRIPTION
Ph queries the CCSO Nameserver, a database of University
faculty, staff, and students. The database contains nearly
all the information in the Student/Staff Directory (the Uni-
versity phone book), as well as other information, including
electronic mail addresses.
Ph may be used in two ways; interactively or with command-
line arguments.
If given arguments, ph will treat the arguments as a query
and return the results of the query. For example,
ph paul pomes
would return the entry for the maintainer of ph , Paul
Pomes. For more information on what types of queries you
may make, see the QUERIES section below.
If given no arguments, ph will enter interactive mode, print
a prompt, and wait for commands. Interactive mode will be
discussed in detail below.
Ph is not intended for the generation of mailing lists.
Therefore, it will refuse any requests resulting in more
than a small number of matches. This is not negotiable.
OPTIONS
Ph recognizes the following options. They may be specified
in the PH environment variable, given on the command line,
or set with the switch command from inside ph. Options
given with the switch command override all others; options
given on the command line override those in the PH environ-
ment variable.
-n Do not read the .netrc file. This option has meaning
only when using ph in interactive mode (see below for
descriptions of the .netrc file and interactive mode).
-N Do read the .netrc file. This is the default.
-r Do not reformat alias and email fields to show alias-
based e-mail addresses.
-R Reformat alias and email fields to show alias-based e-
mail addresses. This is the default.
-b Do not beautify query responses; print them in gory
detail, complete with response codes.
-B Beautify query responses. This is the default.
-q Suppress prompts and greeting messages. When combined
with -b, the output mimics that of qi(8) and is easily
parsed by other programs.
-m Do not use a paging program (like more(1)) when print-
ing responses.
-M Use a paging program. This is the default.
-l Do not label field values with field names when print-
ing queries.
-L Label field values with field names when printing
queries. This is the default.
-t type
Use type as a default type on queries. This is just
like adding type=type to all queries. The -t option
can be overriden by specifying an explicit type in the
query, as in, "ph pomes type=phone".
-T Do not specify any type by default; this is the
default.
-s server
Use server as a Nameserver host, instead of the default
host. A list of suitable servers may be found with the
query "ph alias=ns-servers".
-p port
Connect to the tcp port port, instead of the default
port.
-c Do not wait for confirmation of edit commands. This is
the default.
-C Wait for confirmation of edit commands (see edit
below).
-f field1,field2,...
Return fields field1,field2,... instead of the default
list of fields, if no return clause is specified on
queries. This is just like adding "return field1
field2 ..." to all queries.
-F Return default list of fields; this is the default.
-h topic
Display a list of on-line help topics. If the -h
option is followed by the name of one of the on-line
help topics, the help screen for topic will be dis-
played.
QUERIES
The Nameserver's database contains over 70,000 entries.
Each entry is comprised of multiple fields, each containing
information about the entry. Each field has a name that is
descriptive of what the field contains; for example, the
field named address contains the office mail address of the
person in question (for more information on fields, see the
description of the fields command in the INTERACTIVE section
below).
By default, queries are assumed to refer to the name or
nickname field of the entry. Therefore, saying "ph john
doe" looks for entries whose name or nickname field contains
"john" and "doe". Fields other than the name and nickname
fields must be specified; for example,
ph pomes address=DCL
would return entries with name or nickname "pomes" whose
address contained "DCL."
Matching in ph is done on a word-by-word basis. That is,
both the query and the entry are broken up into words, and
the individual words are compared. Although ph is insensi-
tive to case, it otherwise requires words to match exactly,
with no characters left over; "john" does not match "john-
son", for example. This behavior may be overriden by the
use of normal shell metacharacters ("?" to match any single
character, "*" to match zero or more characters, and "[]" to
match a single character from a set of characters).
Ph will display only entries that match all of the specifi-
cations in the query. For example,
ph paul pomes
will return all entries with both "paul" and "pomes" in the
name or nickname fields.
Ph returns a certain set of fields by default. It is possi-
ble to ask for different fields in a query. This is done by
specifying the return keyword and listing the fields of
interest. For example,
ph paul pomes return email
would print only the electronic mail address of the main-
tainer of ph. You may also ask for all fields in the entry
by using "all" as a field name. This will show you every
field you are allowed to see in the entry.
All output from ph is sent through more(1) (or whatever pro-
gram is specified in the PAGER environment variable).
INTERACTIVE MODE
If ph is given no arguments, it enters interactive mode,
where it prompts for, executes, and displays the results of
Nameserver commands. Interactive mode provides access to
more Nameserver features than mere queries. Some of these
features require the user to identify him/her self to ph by
use of the login command; others do not. Commands may be
abbreviated, provided enough characters are given to distin-
guish them from other commands.
.netrc file
Ph reads the same .netrc file as does ftp (see ftp(1)).
If it finds a machine named "ph" that has a login and a
password specified for it, ph will automatically do a
login command, using the values from the .netrc file.
Ph will silently refuse to use a .netrc file that has
any permissions for group or other (see chmod(1)).
Public Commands
The following commands do not require the user to be logged
in to the Nameserver:
help [topic]
Provides explanations of Nameserver commands.
Given no arguments, help lists the available help
topics. Given a topic as an argument, help will
print help for that topic. A list of commands and
a one-line description of each command may be
obtained by requesting the topic commands.
query Performs Nameserver queries exactly like non-
interactive ph queries except that metacharacters
do not have to be quoted.
fields Lists the fields currently in use in the Name-
server. For each field, a display like the fol-
lowing (admittedly ugly) is produced:
-200:2:email:max 64 Lookup Public Default Change
-200:2:email:Preferred electronic mail address.
...
The leading number is a reply code from the Name-
server. The next number is the field number.
Following the field number is the name of the
field, the maximum length of the field, and the
attributes for the field. The second line has, in
addition to repeated reply code, number, and name,
a one-line description of the field.
The attributes determine how a field may be used.
Lookup means the field may be searched in a query.
Indexed means the field is indexed (at least one
Indexed field must be included in every query).
Default means the field is displayed by default.
Change means that users may change the field.
set option[=value]
Allows Nameserver options to be set. These
options are for future use.
switch -option [value]
Allows ph options to be set. See the OPTIONS sec-
tion above.
quit Exits ph.
login alias [password]
Identifies the user to the Nameserver. Alias is
your Nameserver alias, a unique name for you in
the Nameserver; it is printed in ph queries, as
the first thing after "email to:":
email to:
[email protected] (p-
[email protected])
In this case, the alias is "p-pomes".
[password] is your password. The square brackets
are not actually typed; instead they indicate that
the password MAY optionally be entered here. If
it is not supplied, ph will prompt for it if nec-
essary.
You will be prompted for your Nameserver password
when you give the login command, unless you are
using ph from the login in your email field (the
one in parentheses on the "email to:" line), and
your system administrator has made ph "setuid
root", in which case no password will be required.
Your Nameserver password is not the same as your
system password; the only way to discover your
Nameserver password is to bring yourself and a
University ID to the CCSO Accounting Office in
1420 DCL. Because of abuses in the past, pass-
words cannot be given out via email, phone, or to
third parties.
Commands Requiring Login
The following commands require that the user executing them
be logged in to the Nameserver.
passwd [alias]
Changes your Nameserver password. You will be
asked to type your new password twice. Ph will
complain if your password is too short or contains
only numbers (although it does allow such pass-
words). Privileged users may change the passwords
of certain other users by specifying the alias of
the other user when giving the passwd command.
me Lists the Nameserver entry of the currently
logged-in user.
edit field [alias]
Allows ph users to change those fields in their
entry that have the Change attribute set. Edit
will retrieve the value of the named field (if a
value exists), and will allow the user to edit the
value with vi(1) (the EDITOR environment variable
may be used to override the use of vi). The
changed value will then be reinserted in the Name-
server. If the -C option is in effect, the mes-
sage, "Change the value [y]?" will be printed
after the editing is finished. Pressing return
alone, or anything beginning with "y", will make
ph change the value; anything beginning with "n"
will make ph discard the changes.
make field=value [field2=value2...]
Allows ph users to change those fields in their
entry that have the Change attribute set. Make
will set the specified field(s) to the specified
value(s) in the entry of the currently logged in
user.
add Adds entries to the Nameserver. This is a privi-
leged command.
delete Deletes entries from the Nameserver. This is a
privileged command.
logout Undoes the effects of a login command.
QUERY EXAMPLES
Here are some examples to clarify ph queries. Each example
is preceded by a description of the desired effect. It is
assumed that the queries are being done with ph from the
command line, rather than by using the interactive mode of
ph. The only difference for interactive mode is that
metacharacters would not have to be quoted or escaped.
Find the ph entry for Paul Pomes:
ph paul pomes
Find the ph entry for P. Pomes, where the rest of the first
name is not known:
ph p\* pomes
Find Alonzo Johnson (or is that JohnsEn?):
ph alonzo johns\?n
or
ph alonzo johns\[eo\]n
Find Paul P., where the rest of the last name is unknown:
ph paul p\*
The last query fails because it matches too many entries.
It is therefore necessary to narrow the search. Suppose it
is known that Paul P. has an office in DCL:
ph paul p\* address=DCL
Alternately, suppose Paul P. works for CCSO. You might try:
ph paul p\* department=CCSO
When that failed, a good next guess would be:
ph paul p\* department=computing
The moral of the story is that fields in ph generally con-
tain whatever the user wishes them to contain, and, hence,
there may be many different spellings and abbreviations for
any particular field (some fields are exceptions, including
the name field, which is always the full name, as known to
the University, of the person involved). It pays to make
liberal use of metacharacters and creativity when searching
fields other than name.
Suppose all that is wanted is the full name and electronic
mail address of P. Pomes:
ph p\* pomes return name email
RENAMING PH
If ph is invoked with a name other than ph, slightly differ-
ent option processing is done. For the sake of an example,
let us assume ph was invoked with the name, "unit". The
following consequences obtain:
Ph will assume an option of "-t unit". Ph will read the
UNIT environment variable, after reading the PH environment
variable, and before reading command-line options.
This feature allows the easy installation of entry-type spe-
cific lookup commands, as well as custom configuration of
those commands.
BUGS
Separate words in a query are allowed to match the same word
in the entry; "ph s\* smith" is functionally equivalent to
"ph smith", because the "s*" is allowed to match "smith".
Ph does some looking about in the commands you give it, but
does not understand the full syntax of Nameserver commands.
This can occasionally lead to mistakes, especially when
dealing with quoted strings.
DISTRIBUTION
Source code for ph is available by anonymous ftp to
vixen.cso.uiuc.edu, in the file pub/ph.tar.gz. The complete
system, including source for the qi(8) server side is in the
file pub/qi.tar.gz. This source works on 4.[23]BSD UNIX
systems. Any troubles encountered porting ph to a particu-
lar system are of interest to the maintainer of ph, as are
ports done to other operating systems.
SEE ALSO
The CCSO Nameserver - An Introduction, by Steven Dorner;
updated by Paul Pomes.
The CCSO Nameserver - Server-Client Protocol, by Steven
Dorner; updated by Paul Pomes.
qi(8)
AUTHOR
Steve Dorner (
[email protected]), Qualcomm, Inc. (for-
merly at the University of Illinois Computing and Communica-
tions Services Office)
The code is now maintained by Paul Pomes (
[email protected]),
University of Illinois Computing and Communications Services
Office.
30-Jul-1992 PH(1L)