如何从 ldapsearch 结果创建电子邮件地址列表以供进一步处理?

如何从 ldapsearch 结果创建电子邮件地址列表以供进一步处理?

对于自动邮件发送并通知用户、特定组的各个成员,我正在寻找命令或单个命令行,它提供电子邮件地址列表并可以进一步使用。

目前我可以通过以下方式查找目录:

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 

这为我提供了所有群组成员的压缩电子邮件地址,但不是我正在寻找的用于进一步处理的格式。

[email protected]
[email protected]
[email protected]
...

如何获得一行结果,即逗号或分号分隔?

[email protected];[email protected];[email protected];...

使用逗号替换换行符tr或者sed(对我来说)不起作用。

答案1

经过一番研究后我发现paste命令。所以添加

| 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 ";" 

相关内容