ldapsearch输出到文本文件

时间:2016-11-21 20:26:10

标签: bash unix

我正在编写一个bash脚本来返回用户的显示名称。当我在控制台上运行命令时,我得到显示名称。当我运行从文本文件中读取输入的脚本时,我没有得到显示名称。

对于kma@abc.com,显示名称如下:Khbsd Muweu

输入文本文件(names.txt)包含以下数据:

"kma@abc.com"  
"hja@abc.com"  
"dgi@abc.com"  

脚本如下:

while IFS='' read -r line || [[ -n "$line" ]]
do
echo "$line"
ldapsearch -v -LLL -Y GSSAPI -H ldap://padns1.abc.com -b "dc=abc,dc=com" userPrincipalName="$line" displayName -Q | grep "displayName: .*$" | awk '{print $2,$3}'
done < "$1"

此脚本保存为fnames.sh,脚本运行为:

bash fnames.sh names.txt

echo&#34; $ line&#34;打印文本文件中的内容,但ldapsearch命令不起作用。有人能让我在哪里错了吗? 我想将命令的输出(只是显示名称)存储在文本文件中。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

如果您的输入文件实际上包含这些双引号,那就是造成问题的原因。

扩展后,您将使用userPrincipalName=""kma@abc.com"",也就是说,字面上要查找"kma@abc.com"(带引号),而不是kma@abc.com(不带引号)。您还应该检查输入文件是否使用了正确的行结尾。混合运输可以默默地造成严重破坏。