我做了这个脚本。它在 passwd 中搜索后返回用户名,但用户名完全相同。我想知道是否可以更改它,如果用户输入为"r",它会搜索名称中带有 r 的每个用户,而不是搜索名为 r 的用户。
if [ $# -eq 0 ]
then
echo "Enter your username ( ./user123 user here )"
else
nameList=$(getent passwd $@|cut -f1 -d:)
for i in $nameList;
do echo $i;
done
fi
为什么不直接grep
密码数据库? 例如
getent passwd | cut -f1 -d: | grep $1
当然,处理多个名称需要更多的代码。
您将永远无法使用 getent
执行此操作,因为它有效地隐藏了 passwd map 的后端存储,并且只搜索整个密钥。
但是,对于文件后端,这将起作用:
$ getent passwd | nawk -F: '$1 ~ /oot/ { print $1 }'
root
对于 ldap,您需要了解 ldap 查询。