2016-12-06 13 views
0

私はシンプルであることが予想何かを主張しています....、bashのLDAP検索 - フィルターとして変数

私は経営者の電子メールおよびSAM名を取得、その後、LDAPからユーザーマネージャを検索します。

私はこのようなLDAPからのマネージャーのためのCNを得ることができると期待:今、私は次のように別のクエリを実行すると

CN=manager,\ Surname 

manager=$(/usr/bin/ldapsearch -LLL -H ldap://company.ads -x -D [email protected] -w password -b ou=employees,dc=company,dc=ads sAMAccountName=employee1 | grep "manager:" | awk '{gsub("manager: ", "");print}' | awk 'BEGIN {FS=","}; {print $1, $2 }') 

私にこのようなCNを与えることこの:

/usr/bin/ldapsearch -LLL -H ldap://company.ads -x -D [email protected] -w password -b ou=employees,dc=company,dc=ads $manager 

私は悪い検索フィルター(-7)を取得します。

Iveはこれにいくつかのバリエーションを試しました。

ありがとうございました。

答えて

1

$managerにスペースがあるので、複数の引数に分割されないように引用符を付ける必要があります。

/usr/bin/ldapsearch -LLL -H ldap://company.ads -x -D [email protected] -w password -b ou=employees,dc=company,dc=ads "$manager" 

通常、変数を単語に分割する必要がない限り、常に変数を引用することをお勧めします。

また、LDAPエントリからバックスラッシュ\を削除する必要があります。バックスラッシュはスクリプト内のリテラルスペースをエスケープするためのもので、変数の展開時には処理されないため、データに使用しないでください。

+0

Iveは引用符を追加しましたが、同じ結果、悪い検索フィルタ、エコー、過去の結果を再度取得します。それはこれと関連していなければならず、どこかで逃げていく悪いものです。 –

+0

'$ manager'は本当にそのバックスラッシュを含んでいますか?変数を展開するときは、バックスラッシュは処理されないので、文字通りフィルタとして送信されます。 – Barmar

+0

はい、それは変数にあります、私はCNを取得すると広告から返されるので、私の問題は\? –

関連する問題