Hello Mark, Sorry for the long delay in responding to your mail(s). On Tue, Nov 1, 2011 at 3:30 AM, Mark R Bannister <mark@xxxxxxxxxxxxxxxxxxxxx> wrote: > Hi, > > As previously noted on this mailing list, although the GNU C Library provides the > getent.c source code, the getent(1) man page is missing from the Linux man-pages > project. The existing getent(1) man page found on common Linux distributions is > very short, and says very little. Indeed. > I am not sure where it comes from (Debian?), Looks like it. > but should really be part of the man-pages project as it is functionality > provided by glibc. Yes, I am inclined to agree. > I hope you will accept the following into the Linux man-pages project. I have > written this from scratch to be much more informative and using the latest glibc > nss/getent.c as a reference. I've added this page for the upcoming man-pages-3.37 release. The formatting was fine (thanks for paying close attention to the formatting!) and I made a very few wording and grammar changes (these were not to fix errors, just to bring the page into consistency with common practice in man-pages), Thank you for contributing this page! Cheers, Michael > ---------- > > .\" Copyright (c) 2011, Mark R. Bannister <cambridge@xxxxxxxxxxxxxxxxxxxxx> > .\" > .\" This is free documentation; you can redistribute it and/or > .\" modify it under the terms of the GNU General Public License as > .\" published by the Free Software Foundation; either version 2 of > .\" the License, or (at your option) any later version. > .\" > .\" The GNU General Public License's references to "object code" > .\" and "executables" are to be interpreted as the output of any > .\" document formatting or typesetting system, including > .\" intermediate and printed output. > .\" > .\" This manual is distributed in the hope that it will be useful, > .\" but WITHOUT ANY WARRANTY; without even the implied warranty of > .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > .\" GNU General Public License for more details. > .\" > .\" You should have received a copy of the GNU General Public > .\" License along with this manual; if not, write to the Free > .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, > .\" USA. > .\" > .TH GETENT 1 2011-10-31 "Linux" "User Commands" > .SH NAME > getent \- get entries from Name Service Switch libraries > .SH SYNOPSIS > .BI "getent " database " [ " key " ... ]" > .SH DESCRIPTION > Displays entries from databases supported by the Name Service Switch libraries, > which are configured in > .IR /etc/nsswitch.conf . > If one or more > .I key > is provided, then only the entries that match the supplied keys will be > displayed. > Otherwise, if no > .I key > is provided, all entries will be displayed (unless the database does not > support enumeration). > .LP > The > .I database > may be any supported by the GNU C Library, listed below: > .RS 3 > .TP 10 > .B ahosts > When no > .I key > is provided, uses > .BR sethostent (3), > .BR gethostent (3) > and > .BR endhostent (3) > to enumerate the hosts database. > This is identical to using > .BR hosts . > When one or more > .I key > is provided, passes each > .I key > in succession to > .BR getaddrinfo (3) > with the address family > .BR AF_UNSPEC , > enumerating each socket address structure returned. > .TP > .B ahostsv4 > Same as > .B ahosts > except for the address family > .BR AF_INET . > .TP > .B ahostsv6 > Same as > .B ahosts > except for the address family > .BR AF_INET6 . > The call to > .BR getaddrinfo (3) > in this case includes the > .B AI_V4MAPPED > flag. > .TP > .B aliases > When no > .I key > is provided, uses > .BR setaliasent (3), > .BR getaliasent (3) > and > .BR endaliasent (3) > to enumerate the aliases database. > When one or more > .I key > is provided, passes each > .I key > in succession to > .BR getaliasbyname (3) > and displays the result. > .TP > .B ethers > When one or more > .I key > is provided, passes each > .I key > in succession to > .BR ether_aton (3) > and > .BR ether_hostton (3) > until a result is obtained, and displays the result. > Enumeration is not supported on > .BR ethers , > so a > .I key > must be provided. > .TP > .B group > When no > .I key > is provided, uses > .BR setgrent (3), > .BR getgrent (3) > and > .BR endgrent (3) > to enumerate the group database. > When one or more > .I key > is provided, passes each numeric > .I key > to > .BR getgrgid (3) > and each non-numeric > .I key > to > .BR getgrnam (3) > and displays the result. > .TP > .B gshadow > When no > .I key > is provided, uses > .BR setsgent (3), > .BR getsgent (3) > and > .BR endsgent (3) > to enumerate the gshadow database. > When one or more > .I key > is provided, passes each > .I key > in succession to > .BR getsgnam (3) > and displays the result. > .TP > .B hosts > When no > .I key > is provided, uses > .BR sethostent (3), > .BR gethostent (3) > and > .BR endhostent (3) > to enumerate the hosts database. > When one or more > .I key > is provided, passes each > .I key > to > .BR gethostbyaddr (3) > or > .BR gethostbyname2 (3), > depending on whether a call to > .BR inet_pton (3) > indicates that the > .I key > is an IPv6 or IPv4 address or not, and displays the result. > .TP > .B initgroups > When one or more > .I key > is provided, passes each > .I key > in succession to > .BR getgrouplist (3) > and displays the result. > Enumeration is not supported on > .BR initgroups , > so a > .I key > must be provided. > .TP > .B netgroup > When one > .I key > is provided, passes the > .I key > to > .BR setnetgrent (3) > and, using > .BR getnetgrent (3) > displays the resulting string triple > .RI ( hostname ", " username ", " domainname ). > Alternatively, three > .I keys > may be provided, which are interpreted as the > .IR hostname , > .I username > and > .I domainname > to match to a netgroup name via > .BR innetgr (3). > Enumeration is not supported on > .BR initgroups , > so either one or three > .I keys > must be provided. > .TP > .B networks > When no > .I key > is provided, uses > .BR setnetent (3), > .BR getnetent (3) > and > .BR endnetent (3) > to enumerate the networks database. > When one or more > .I key > is provided, passes each numeric > .I key > to > .BR getnetbyaddr (3) > and each non-numeric > .I key > to > .BR getnetbyname (3) > and displays the result. > .TP > .B passwd > When no > .I key > is provided, uses > .BR setpwent (3), > .BR getpwent (3) > and > .BR endpwent (3) > to enumerate the passwd database. > When one or more > .I key > is provided, passes each numeric > .I key > to > .BR getpwuid (3) > and each non-numeric > .I key > to > .BR getpwnam (3) > and displays the result. > .TP > .B protocols > When no > .I key > is provided, uses > .BR setprotoent (3), > .BR getprotoent (3) > and > .BR endprotoent (3) > to enumerate the protocols database. > When one or more > .I key > is provided, passes each numeric > .I key > to > .BR getprotobynumber (3) > and each non-numeric > .I key > to > .BR getprotobyname (3) > and displays the result. > .TP > .B rpc > When no > .I key > is provided, uses > .BR setrpcent (3), > .BR getrpcent (3) > and > .BR endrpcent (3) > to enumerate the rpc database. > When one or more > .I key > is provided, passes each numeric > .I key > to > .BR getrpcbynumber (3) > and each non-numeric > .I key > to > .BR getrpcbyname (3) > and displays the result. > .TP > .B services > When no > .I key > is provided, uses > .BR setservent (3), > .BR getservent (3) > and > .BR endservent (3) > to enumerate the services database. > When one or more > .I key > is provided, passes each numeric > .I key > to > .BR getservbynumber (3) > and each non-numeric > .I key > to > .BR getservbyname (3) > and displays the result. > .TP > .B shadow > When no > .I key > is provided, uses > .BR setspent (3), > .BR getspent (3) > and > .BR endspent (3) > to enumerate the shadow database. > When one or more > .I key > is provided, passes each > .I key > in succession to > .BR getspnam (3) > and displays the result. > .RE > .SH "EXIT STATUS" > One of the following exit values can be returned by > .BR getent : > .RS 3 > .TP 10 > .B 0 > Command completed successfully. > .TP > .B 1 > Missing arguments, or > .I database > unknown. > .TP > .B 2 > One or more supplied > .I key > could not be found in the > .IR database . > .TP > .B 3 > Enumeration not supported on this > .IR database . > .RE > .SH "SEE ALSO" > .BR nsswitch.conf (5). > > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Author of "The Linux Programming Interface"; http://man7.org/tlpi/ -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html