Search
通過全名/gecos 欄位查找使用者名?
給定一個使用者數據來自例如 OpenLDAP 數據庫並且不在
/etc/passwd
文件中的系統。是否可以通過指定(部分)全名來搜尋getent passwd
數據庫並查找使用者 ID/名稱?例如
getent passwd newbie
給了我以下條目newbie:x:1000:1000:firstname lastname:/home/newbie:/bin/zsh
如何找到所有具有“姓氏”的使用者?
getpwnam
gecos 領域有類似的東西嗎?注意:我不能只使用
getent passwd
(沒有使用者名)然後解析它,因為我的數據庫太大了。
我還沒有找到搜尋數據庫的方法,但是直接在 OpenLDAP 中查找條目對我有用。
$ ldapsearch -x -h ldap.example.com -ZZ \ -D cn=lookup,dc=example,dc=com -W \ -b ou=People,dc=example,dc=com -LLL \ sn=lastname uid dn: uid=newbie,ou=People,dc=example,dc=com uid: newbie $
您可以使用類似以下
sed
命令的內容:$ SURNAME=Smith $ getent passwd | sed -n '/'$SURNAME'/s/^\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([[:alpha:]]\+ '$SURNAME'\):\([^:]*\):\([^:]*\)$/\1 (\5)/p' $ fps (Finnbarr Smith) jms (James Smith) $
根據您的問題,上述 ‘sed` 正則表達式假定 GECOS 欄位完全包含 <FIRSTNAME><SPACE><LASTNAME>,例如“James Smith”。它可以輕鬆修改以適應其他 GECOS 現場佈局。