diff --git a/usr.bin/hesinfo/Makefile b/usr.bin/hesinfo/Makefile new file mode 100644 index 000000000000..23666514ccc0 --- /dev/null +++ b/usr.bin/hesinfo/Makefile @@ -0,0 +1,5 @@ +# $NetBSD: Makefile,v 1.1 1999/01/25 22:45:55 lukem Exp $ + +PROG= hesinfo + +.include diff --git a/usr.bin/hesinfo/hesinfo.1 b/usr.bin/hesinfo/hesinfo.1 new file mode 100644 index 000000000000..f7936915db58 --- /dev/null +++ b/usr.bin/hesinfo/hesinfo.1 @@ -0,0 +1,225 @@ +.\" $NetBSD: hesinfo.1,v 1.1 1999/01/25 22:45:55 lukem Exp $ +.\" +.\" from: #Id: hesinfo.1,v 1.9 1996/11/07 01:57:12 ghudson Exp # +.\" +.\" Copyright 1987, 1996 by the Massachusetts Institute of Technology. +.\" +.\" Permission to use, copy, modify, and distribute this +.\" software and its documentation for any purpose and without +.\" fee is hereby granted, provided that the above copyright +.\" notice appear in all copies and that both that copyright +.\" notice and this permission notice appear in supporting +.\" documentation, and that the name of M.I.T. not be used in +.\" advertising or publicity pertaining to distribution of the +.\" software without specific, written prior permission. +.\" M.I.T. makes no representations about the suitability of +.\" this software for any purpose. It is provided "as is" +.\" without express or implied warranty. +.TH HESINFO 1 "27 October 1996" +.FM mit +.SH NAME +hesinfo \- find out what is stored in the Hesiod database +.SH SYNOPSIS +.nf +hesinfo \fI[-bl]\fR \fIHesiodName\fR \fIHesiodNameType\fR +.SH DESCRIPTION +.I hesinfo +takes two arguments, a name to be resolved and a string, known +as a HesiodNameType. It then prints the information returned by +the Hesiod nameserver. +.PP +The value returned by +.B hesinfo +is of the type +.I HesiodNameType. +.PP +.I hesinfo +understands the following options: +.TP +.B -l +Selects long format. +.TP +.B -b +Prints the fully-qualified string passed to the nameserver. + +.PP +.SS VALID Hesiod_Names +The following types of identifiers may be used in the +.I HesiodName +argument to +.B hesinfo. +These values will be resolved by accessing the +.B hesiod +database. + +.TP +.B \ +the 8-character-or-less string used to identify users or classes +(e.g. joeuser, root, 1.00, etc). +Used with the +.I Hesiod_Name_Types +.BR passwd, +.BR pobox, +and +.BR filsys. + + +.TP +.B \ +the id number assigned to a user. + +.TP +.B \ +the id number assigned to a group. + +.TP +.B \ +a name identifying a unique group. + +.TP +.B \ +the name of an athena file system. + +.TP +.B \: +the name of an rvd's server and pack seperated by a colon. + +.TP +.B \: +the name of an nfs server and its partition seperated by a colon. + +.TP +.B \ +the machine name of an Athena workstation (e.g. E40-343-3). + +.TP +.B \ +name of an Athena service (e.g. Zephyr). + +.TP +.B \ +name of Unix service (valid entries are defined in /etc/services). + +.TP +.B \ +name of a printer. + +.TP +.B \ +name of an Athena print cluster. + +.TP +.B \ +some +.B hesinfo +calls (e.g. +.B prclusterlist +) do not require a specific +.I HesiodName +argument. However, you must include a dummy string (e.g. 'foo') for +.B hesinfo + to work properly. + + + + +.PP +.SS VALID Hesiod_Name_Types +The following symbols are valid substitutions for the +.I HesiodNameType +argument to +.B hesinfo. + +.TP +.B \ passwd +returns string suitable for inclusion in +.I /etc/passwd, +searching with +.B . + +.TP +.B \ pobox +returns information on the pobox assigned to the user specified by +.I HesiodName, +searching with +.B . + + +.TP +.B \ uid +returns string suitable for inclusion in +.I /etc/passwd, +searching with +.B . + +.TP +.B \ gid +returns string suitable for inclusion in +.I /etc/group, +searching with +.B . + +.TP +.B \ group +returns string suitable for inclusion in +.I /etc/group, +searching with +.B . + +.TP +.B \ grplist +returns subgroups included in superset +defined by +.B . + +.TP +.B \ filsys +returns file system type, export point, server, mount mode, and import point +for the following valid +.I HesiodNames +(see above) +.B - , , :, +.B and : + +.TP +.B \ cluster +returns information about the local cluster the workstation, specified by +.B . +Included is information about the local file and print servers. This +information is accesses by +.B clusterinfo +at boot time. + +.TP +.B \ sloc +returns network name of service host for +.B . + +.TP +.B \ service +returns Internet protocol type and protocol service port for +.B . + +.TP +.B \ pcap +returns a valid entry for /etc/printcap for +.B . + +.TP +.B \ prcluserlist +returns a list of print clusters. + +.TP +.B \ prcluster +returns a list of printers in a cluster specified by +.B . + +.SH FILES +/etc/hesiod.conf +.SH "SEE ALSO" +`Hesiod - Project Athena Technical Plan -- Name Service', named(8), hesiod(3) +.SH AUTHOR +Steve Dyer, IBM/Project Athena +.br +Copyright 1987, 1988, 1996 by the Massachusetts Institute of Technology. +.br diff --git a/usr.bin/hesinfo/hesinfo.c b/usr.bin/hesinfo/hesinfo.c new file mode 100644 index 000000000000..31241ccf6403 --- /dev/null +++ b/usr.bin/hesinfo/hesinfo.c @@ -0,0 +1,119 @@ +/* $NetBSD: hesinfo.c,v 1.1 1999/01/25 22:45:55 lukem Exp $ */ + +/* Copyright 1988, 1996 by the Massachusetts Institute of Technology. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of M.I.T. not be used in + * advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. + * M.I.T. makes no representations about the suitability of + * this software for any purpose. It is provided "as is" + * without express or implied warranty. + */ + +/* This file is a simple driver for the Hesiod library. */ + + +#include +#ifndef lint +#if 0 +static char rcsid[] = "#Id: hesinfo.c,v 1.8 1996/12/08 21:29:54 ghudson Exp #"; +#else +__RCSID("$NetBSD: hesinfo.c,v 1.1 1999/01/25 22:45:55 lukem Exp $"); +#endif +#endif /* not lint */ + +#include +#include +#include +#include +#include +#include +#include + +int main __P((int, char **)); +extern char *__progname; + +int +main(argc, argv) + int argc; + char **argv; +{ + char **list, **p, *bindname, *name, *type; + int lflag = 0, errflg = 0, bflag = 0, c; + void *context; + + while ((c = getopt(argc, argv, "lb")) != -1) { + switch (c) { + case 'l': + lflag = 1; + break; + case 'b': + bflag = 1; + break; + default: + errflg++; + break; + } + } + if (argc - optind != 2 || errflg) { + fprintf(stderr, "Usage: %s [-bl] name type\n", __progname); + fprintf(stderr, "\t-l selects long format\n"); + fprintf(stderr, "\t-b also does hes_to_bind conversion\n"); + exit(2); + } + name = argv[optind]; + type = argv[optind + 1]; + + if (hesiod_init(&context) < 0) { + if (errno == ENOEXEC) + warnx( + "hesiod_init: Invalid Hesiod configuration file."); + else + warn("hesiod_init"); + } + /* Display bind name if requested. */ + if (bflag) { + if (lflag) + printf("hes_to_bind(%s, %s) expands to\n", name, type); + bindname = hesiod_to_bind(context, name, type); + if (!bindname) { + if (lflag) + printf("nothing\n"); + if (errno == ENOENT) + warnx("hesiod_to_bind: Unknown rhs-extension."); + else + warn("hesiod_to_bind"); + exit(1); + } + printf("%s\n", bindname); + free(bindname); + if (lflag) + printf("which "); + } + if (lflag) + printf("resolves to\n"); + + /* Do the hesiod resolve and check for errors. */ + list = hesiod_resolve(context, name, type); + if (!list) { + if (lflag) + printf("nothing\n"); + if (errno == ENOENT) + warnx("hesiod_resolve: Hesiod name not found."); + else + warn("hesiod_resolve"); + exit(1); + } + /* Display the results. */ + for (p = list; *p; p++) + printf("%s\n", *p); + + hesiod_free_list(context, list); + hesiod_end(context); + exit(0); +}