自動メールを送信し、特定のグループの各メンバーであるユーザーに通知するために、電子メールアドレスのリストを提供し、さらに使用できるコマンドまたは単一のコマンドラインを探しています。
現在、次のような方法でディレクトリを検索できます。
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
は機能しませんでした(私にとって)。
いくつかの調査の後、私は 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 ";"