我有一个包含用户列表的文件。我想查询我们公司的ldap来检查我列表中的用户是否仍然是公司ldap服务器上的现有帐户。
bash脚本本质上,使用该文件使用名称来检查ldaps'cn',然后可能输出/打印到结果以识别哪些名称不再存在。
听起来很简单,我熟悉基本的ldapsearch命令,但不知道如何开始编写脚本。
感谢所有帮助!
答案 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