带有输入文件的ldapsearch脚本

时间:2018-05-09 19:00:42

标签: bash ldap-query

我有一个包含用户列表的文件。我想查询我们公司的ldap来检查我列表中的用户是否仍然是公司ldap服务器上的现有帐户。

bash脚本本质上,使用该文件使用名称来检查ldaps'cn',然后可能输出/打印到结果以识别哪些名称不再存在。

听起来很简单,我熟悉基本的ldapsearch命令,但不知道如何开始编写脚本。

感谢所有帮助!

1 个答案:

答案 0 :(得分:0)

我完成了这个确切的任务,我的方法是:执行ldapsearch查询并获取ldap中有效用户的所有电子邮件。转换为小写,排序,删除重复项并存储在文件中。对要检查的用户列表执行相同操作。然后使用comm从LDAP中查找不在列表中的任何电子邮件。除非您拥有大量LDAP记录,否则此方法应该是最快的。这是代码:

LDAP_SERVER="ldap://YOUR.LDAP.SERVER:389"
LDAP_USER="QUERY_USER_NAME"
LDAP_PASSWORD="QUERY_PASSWORD"

ldapsearch -E pr=1000/noprompt -LLL -o ldif-wrap=no -x \
    -b 'dc=example,dc=com' \
    -H $LDAP_SERVER -D $LDAP_USER -w $LDAP_PASSWORD \
    '(&(objectCategory=person)(objectClass=user)(Mail=*))' mail |\
    awk '/^mail:/{print $2}' |\
    tr '[:upper:]' '[:lower:]' |\
    sort -u >ldap_emails

cat user_list |\
    tr '[:upper:]' '[:lower:]' |\
    sort -u >user_emails

comm -13 ldap_emails user_emails