getentは、ユーザーやホスト名のほかにも、ネットワーク名、RPCプログラム番号、メールのエイリアス、MACアドレスとホスト名の対応、ネットグループを引ける。

データベース参照するファイル内容
networks/etc/networksネットワーク名とネットワークアドレス
rpc/etc/rpcRPCプログラム名と番号
aliases/etc/aliasesメールのエイリアス
ethers/etc/ethersMACアドレスとホスト名
netgroup/etc/netgroupホストとユーザーの組のグループ

どれも引数にキーを渡して引く。実行例はUbuntu 24.04(glibc 2.39)のもの。

ネットワーク名を調べる (networks)

/etc/networksに書かれたネットワーク名とネットワークアドレスの対応を引く。名前でもアドレスでも引ける。

$ getent networks link-local
link-local            169.254.0.0
$ getent networks 169.254.0.0
link-local            169.254.0.0

/etc/networksにoffice 10.1.0.0 corpと書くと、名前、別名、アドレスのどれでも引ける。出力は「名前、アドレス、別名」の順である。

$ getent networks office
office                10.1.0.0 corp
$ getent networks corp
office                10.1.0.0 corp
$ getent networks 10.1.0.0
office                10.1.0.0 corp

RPCプログラムの番号を調べる (rpc)

/etc/rpcに書かれたRPCプログラムの名前と番号の対応を引く。netbaseパッケージに含まれるファイルである。

$ getent rpc portmapper
portmapper      100000  portmap sunrpc rpcbind
$ getent rpc 100003
nfs             100003  nfsprog

出力は「プログラム名、番号、別名」の順である。見つからない名前や番号は、何も表示されず終了コード2になる。

メールのエイリアスを調べる (aliases)

/etc/aliasesの内容を引く。/etc/aliasesに以下を書いた環境での実行例である。

postmaster: root
webmaster: alice, bob
$ getent aliases webmaster
webmaster:      alice, bob

/etc/aliasesが無い環境では、何も表示されず終了コード2になる。

MACアドレスとホスト名の対応を調べる (ethers)

/etc/ethersに書かれたMACアドレスとホスト名の対応を引く。/etc/ethersに00:11:22:33:44:55 myhostと書いた環境では、ホスト名でもMACアドレスでも引ける。

$ getent ethers myhost
0:11:22:33:44:55 myhost
$ getent ethers 00:11:22:33:44:55
0:11:22:33:44:55 myhost

MACアドレスの各桁は、先頭の0が省略されて表示される。ethersは全件の列挙に対応しておらず、キーを省略すると終了コード3になる。

参考: 【getent】データベースのエントリを全件列挙する (キー省略)

ネットグループを調べる (netgroup)

ネットグループは、(ホスト,ユーザー,ドメイン)の組をまとめた名前である。NFSのアクセス制御などに使われる。/etc/netgroupに以下を書いた環境での実行例である。

admins (host1,alice,) (host2,bob,)

/etc/nsswitch.confのnetgroupの行は、既定でnisになっている。このままでは/etc/netgroupは引かれず、何も表示されず終了コード2になる。-s filesを付けると、/etc/netgroupを引ける。

$ getent netgroup admins
$ echo $?
2
$ getent -s files netgroup admins
admins                (host1,alice,) (host2,bob,)

参考: 【getent】参照元を指定して取得する (-s)

netgroupも全件の列挙には対応していない。