对于自动邮件发送并通知用户、特定组的各个成员,我正在寻找命令或单个命令行,它提供电子邮件地址列表并可以进一步使用。
目前我可以通过以下方式查找目录:
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 ";"