Using the Solaris getent command
As a system administrator, you can query name service information sources with tools, such as the
You can use the ypcat command to query the NIS namespace. You can use the nslookup command to query the DNS namespace. However, when trying to isolate a problem, using one of these tools can return different results than standard system search operations, because the nsswitch.conf file is not referenced by these commands.
The getent command has these advantages:
- The primary advantage is that the command searches the information sources in the order in which they are configured in the name service switch file.
- A secondary advantage is that by using the name service switch file, the defined status message codes and actions are tested as they are currently configured. Therefore, if a return action is improperly placed in the name service switch file, the getent command will find the problem, whereas the specific commands used to test the name service information sources (such as ypcat or nslookup) will not find the problem because they directly use the name service database without referencing the nsswitch.conf file.
getent command retrieves a list of entries from the administrative database specified by database. The sources for the database are specified in the /etc/nsswitch.conf file. The syntax is:
getent database [key]...
- database — The name of the database to be examined. This name can be passwd, group, hosts, ip nodes, services, protocols, ethers, networks, or netmasks.
- key — A value that corresponds to an entry in a database. The key must be in a format appropriate for searching on the respective database. For example, it can be a username or numeric user ID (UID) for passwd, or a host name or IP address for hosts.
In the following examples, the
/etc/nsswitch.conf file is configured to search
files and then to search
# getent passwd user1 user1:x:1002:10:Dummy User 1:/export/home/user1:/usr/bin/ksh # getent group 10 staff::10: # getent hosts church1e 10.1.1.22 church1e loghost
nis before local
# grep "^hosts:" /etc/nsswitch.conf hosts: nisplus [NOTFOUND=return] files
/etc/nsswitch.conf file is configured to search NIS and then to search files, the output of the final search would be:
# getent hosts church1e 10.1.1.22 church1e
You will notice that the entry
loghost is missing in this output. The
loghost is an alias entry in the
/etc/inet/hosts file for
church1e but not in the NIS map. Therefore, when the
/etc/nsswitch.conf file search order is altered, the
getent command looks up the entry in the NIS map before consulting the