Ldap

如何從 ldapsearch 結果創建電子郵件地址列表以進行進一步處理?

  • July 13, 2018

對於自動郵件並通知使用者,特定組的各個成員,我正在尋找提供電子郵件地址列表並且可以進一步使用的命令或單個命令行。

目前,我可以通過以下方式查找目錄:

ldapsearch -h dc.example.com -p 389 -D "EXAMPLE\admin" -x -w "password" -b "DC=example,DC=com" -s sub "(&(objectCategory=person)(objectClass=user)(sAMAccountName=*)(memberOf=CN=Developers,OU=Role_Groups,OU=Groups,DC=example,DC=com))" mail \
| grep "mail:" \
| cut -d " " -f 2 

這給了我所有組成員的電子郵件地址,但不是我正在尋找的進一步處理的格式。

admin@example.com
developer@example.com
user@example.com
...

如何在一行中得到結果,即逗號或分號分隔?

admin@example.com;developer@example.com;user@example.com;...

用逗號替換換行符使用trsed不起作用(對我來說)。

經過一番研究,我找到了pastecommand。所以添加

| paste -sd ";"

讓它以我正在尋找的方式工作。我現在使用的最後一個命令行是

ldapsearch -h dc.example.com -p 389 -D "EXAMPLE\admin" -x -w "password" -b "DC=example,DC=com" -s sub "(&(objectCategory=person)(objectClass=user)(sAMAccountName=*)(memberOf=CN=Developers,OU=Role_Groups,OU=Groups,DC=example,DC=com))" mail \
| grep "mail:" \
| cut -d " " -f 2 \
| paste -sd ";" 

引用自:https://unix.stackexchange.com/questions/455072