getentは、ユーザーやホスト名のほかにも、ネットワーク名、RPCプログラム番号、メールのエイリアス、MACアドレスとホスト名の対応、ネットグループを引ける。
| データベース | 参照するファイル | 内容 |
|---|---|---|
networks | /etc/networks | ネットワーク名とネットワークアドレス |
rpc | /etc/rpc | RPCプログラム名と番号 |
aliases | /etc/aliases | メールのエイリアス |
ethers | /etc/ethers | MACアドレスとホスト名 |
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,)
netgroupも全件の列挙には対応していない。
