| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | #!/bin/sh## Closely (not perfectly) emulate the behavior of glibc's getent utility##passwd|shadow|group|aliases|hosts|networks|ethers|netgroup|protocols|services|rpc# only returns the first match (by design)# dns based search is not supported (hosts,networks)# case-insensitive matches not supported (ethers; others?)# may return false-positives (hosts,protocols,rpc,services,ethers)[ -z "$PATH" ] && PATH="/bin:/usr/bin" || PATH="${PATH}:/bin:/usr/bin"export PATHfile="/etc/$1"case $1 in	passwd|group)		match="^$2:\|^[^:]*:[^:]*:$2:" ;;	shadow)		match="^$2:" ;;	networks|netgroup)		match="^[[:space:]]*$2\>" ;;	hosts|protocols|rpc|services|ethers)		match="\<$2\>" ;;	aliases)		match="^[[:space:]]*$2[[:space:]]*:" ;;	""|-h|--help)		echo "USAGE: $0 database [key]"		exit 0 ;;	*)		echo "$0: Unknown database: $1" 1>&2		exit 1 ;;esacif [ ! -f "$file" ] ; then	echo "$0: Could not find database file for $1" 1>&2	exit 1fiif [ $# -eq 1 ] ; then	exec cat "$file"else	sed "s/#.*//; /$match/q; d" "$file" | grep . || exit 2fi
 |