diff options
Diffstat (limited to 'extra/scripts/getent')
-rwxr-xr-x | extra/scripts/getent | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/extra/scripts/getent b/extra/scripts/getent new file mode 100755 index 000000000..4cbe2876f --- /dev/null +++ b/extra/scripts/getent @@ -0,0 +1,49 @@ +#!/bin/sh +# $Header: /var/cvs/uClibc/extra/scripts/getent,v 1.1 2004/11/11 14:50:52 vapier Exp $ + +search_entry() { + if [ -e "$1" ] ; then + /bin/egrep -v "^#" $1 | /bin/sed 's/#.*$//' | /bin/egrep "${string}" | /bin/sed -n 1p + retval=$? + [ "$retval" = 0 ] || retval=2 + else + retval=2 + fi +} + +file="/etc/$1" +string="dummy" + +#aliases|ethers|group|hosts|netgroup|networks|passwd|protocols|rpc|services|shadow) +# dns based search is not supported for hosts|networks +# networks searches ^string +# protocols|rpc|services searches string anywhere +# ethers|netgroup ? +# it returns only the first match +case $1 in + group|passwd|shadow) + string="^\<$2\>:" + ;; + aliases) + if [ -f /etc/postfix/aliases ] ; then + file="/etc/postfix/aliases" + elif [ -f /etc/mail/aliases ] ; then + file="/etc/mail/aliases" + fi + string="^\<$2\>:" + ;; + networks) + string="^\<$2\>" + ;; + hosts|protocol|rpc|services) + string="\<$2\>" + ;; + *) + echo "Unknown database: $1" + exit 1 + ;; +esac + +search_entry $file $2 + +exit $retval |