web-dev-qa-db-ja.com

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]
...

結果を1行で取得する方法、つまりコンマまたはセミコロンで区切る方法は?

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

trを使用して改行をカンマに置き換える またはsedは機能しませんでした(私にとって)。

2
U880D

いくつかの調査の後、私は 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 ";" 
3
U880D