当前位置: 首页 > news >正文

新手学做网站图纸网匠网站建设有限公司

新手学做网站图纸,网匠网站建设有限公司,企业网站建设开发公司,办公空间设计ppt将AD的ou同步到openldap(可支持全量同步和增量同步) 整体思路如下: 从ad导出所有的数据,然后进行参数替换以及处理,处理后的文件称为A;从openldap导出所有的数据,然后进行参数替换以及处理&am…

将AD的ou同步到openldap(可支持全量同步和增量同步)

整体思路如下:

  • 从ad导出所有的数据,然后进行参数替换以及处理,处理后的文件称为A;
  • 从openldap导出所有的数据,然后进行参数替换以及处理,处理后的文件称为B;
  • 利用A,B进行全文对比,然后将差集和增量进行添加或删除(需要注意的是,这里的需求是openldap的数据完全跟AD保持一致,即便openldap有比ad多出的数据,也会被删除掉,除非不在 同步的ou下(即修改下面的 LDAP_BASE_DN))
#!/bin/bash
# 预定义参数
AD_DOMAIN="<Your AD's domain>"
AD_ADMIN_DN="CN=<Admin account name>,OU=XXX,OU=XXX,DC=XXX,DC=XXX,DC=XXX"
AD_ADMIN_PWD="<Your admin password>"
AD_BASE_DN="DC=XXX,DC=XXX,DC=XXX"
LDAP_DOMAIN="<Your OpenLDAP's domain>"
LDAP_ADMIN_DN="cn=Manager,dc=XXX,dc=XXX,dc=XXX"
LDAP_ADMIN_PWD="<Your admin password>"
LDAP_BASE_DN="OU=xxx,DC=xxx,DC=xxx"# 先从AD上获取OU组织信息,并保存成ldif文件
/opt/bitnami/openldap/bin/ldapsearch -x -H ldap://${AD_DOMAIN} "(&(objectClass=top)(objectClass=organizationalUnit))" dn objectClass ou -D "${AD_ADMIN_DN}" -w "${AD_ADMIN_PWD}" -b "${AD_BASE_DN}" -L | perl -MMIME::Base64 -MEncode=decode -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode("UTF-8",decode_base64($1))/eg;print' > /opt/tmp_query_adgroup.ldif# 全文将 ad的域(dc=aaa,dc=com) 替换为openldap的域(dc=bbb,dc=net)
sed -i 's#DC=aaa,DC=com#DC=bbb,DC=net#g' /opt/tmp_query_adgroup.ldif
# 全文将 :: 替换为 :
sed -i 's#::#:#g' /opt/tmp_query_adgroup.ldif
# 去掉以#开头的行
sed '/^#/d' /opt/tmp_query_adgroup.ldif > /opt/tmp_handle_adgroup.ldif# 读取OPENLDAP上所有的ou
/opt/bitnami/openldap/bin/ldapsearch -x -H ldap://${LDAP_DOMAIN} "(&(objectClass=top)(objectClass=organizationalUnit))" dn objectClass ou -D "${LDAP_ADMIN_DN}" -w "${LDAP_ADMIN_PWD}" -b "${LDAP_BASE_DN}" -L | perl -MMIME::Base64 -MEncode=decode -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode("UTF-8",decode_base64($1))/eg;print' > /opt/tmp_query_opgroup.ldif
# 全文将 :: 替换为 :
sed -i 's#::#:#g' /opt/tmp_query_opgroup.ldif
sed '/^#/d' /opt/tmp_query_opgroup.ldif > /opt/tmp_handle_opgroup.ldif
# 将dc,ou大写
sed -i 's#dc=#DC=#g' /opt/tmp_handle_opgroup.ldif
sed -i 's#ou=#OU=#g' /opt/tmp_handle_opgroup.ldif#==========================================================全文比对==========================================================#openldap比ad多出来的ou
grep -vxFf /opt/tmp_handle_adgroup.ldif /opt/tmp_handle_opgroup.ldif > /opt/tmp_del_group.ldif
sed -i "/^ou:/d" /opt/tmp_del_group.ldif
# 去掉dn
sed -i "s#dn: ##g" /opt/tmp_del_group.ldif# opldap比ad少的ou
grep -vxFf /opt/tmp_handle_opgroup.ldif /opt/tmp_handle_adgroup.ldif > /opt/tmp_add_group.ldif
# 首次全量添加的时候,不需要添加top、organizationalUnit 属性
if ! grep -q "objectClass: top"  /opt/tmp_add_group.ldif ; then# 只保留dn(因为dn是唯一的)sed -i "/^ou:/d" /opt/tmp_add_group.ldifwhile read LINE; do# 如果dn中包含 / 字符,则进行转义if [[ "$LINE" == *"/"* ]]; thenLINE="${LINE//\//\\/}"fitmp_ou=$(echo $LINE | grep -o 'OU=[^,]*' | head -n 1)sed -i "s#^OU=#OU: #g" /opt/tmp_add_group.ldifsed -i "/$LINE/a"$tmp_ou /opt/tmp_add_group.ldifdone < /opt/tmp_add_group.ldifsed -i "/^OU:/i\objectClass: top" /opt/tmp_add_group.ldifsed -i "/^OU:/i\objectClass: organizationalUnit" /opt/tmp_add_group.ldif
fi
# changetype: add必须位于第二行,也就是dn下方
sed -i "/^dn:/a\changetype: add" /opt/tmp_add_group.ldif# 添加换行符
sed -i "/^OU:/a\\\n" /opt/tmp_add_group.ldif
sed -i "/^ou:/a\\\n" /opt/tmp_add_group.ldif#====================================对数据进行增加或者删除====================================# openldap添加缺少ad的ou
/opt/bitnami/openldap/bin/ldapmodify -x -H ldapi:/// -c -w "${LDAP_ADMIN_PWD}" -D "${LDAP_ADMIN_DN}" -f  /opt/tmp_add_group.ldif >& /opt/tmp_add_group_rec.log
# 防止第一次执行不成功(因为ou是无序的)
while read LINE; doif grep -q "ldap_add: No such object (32)" /opt/tmp_add_group_rec.log ; then/opt/bitnami/openldap/bin/ldapmodify -x -H ldapi:/// -c -w "${LDAP_ADMIN_PWD}" -D "${LDAP_ADMIN_DN}" -f  /opt/tmp_add_group.ldif >& /opt/tmp_add_group_rec.log$(sleep 1s)fi
done < /opt/tmp_add_group_rec.log# 最后一步执行 openldap删除多出来的ou
while read LINE; do/opt/bitnami/openldap/bin/ldapdelete  -x -H ldapi:/// -c -w "${LDAP_ADMIN_PWD}" -D "${LDAP_ADMIN_DN}" -r ${LINE} > /dev/null 2>&1
done < /opt/tmp_del_group.ldif
http://www.yayakq.cn/news/565673/

相关文章:

  • 南宁哪有网站建设公司上海建网站价格
  • 互联网招聘网站排行素材网站定制
  • 网站开发对比特点网站设计职业工作室
  • 网站空间多少钱一年管理咨询的主体包括哪些
  • 小工程承包app英德网站seo
  • 网站建设主要由哪几个部分组成公众号文章怎么添加小程序
  • 网站免费正能量直接进入老狼南宁360网
  • 小程序推广计划怎么赚钱河南企业站seo
  • 东莞做网站 自媒体金科科技 做网站
  • wix网站做seo如何专业网站建设在哪里
  • 建筑设计网站大全网站下载app最新版
  • 百度seo站长工具php网站 服务器
  • 成都网站定制互联网关键词优化
  • 视觉中国网站建设公司diy网站建设源码
  • 建筑网官方网站东莞人才市场招聘信息2023
  • 南京网站优化步骤建筑企业资质
  • 旅游型网站的建设背景图片深圳制作公司网页
  • 建设网站如入什么费百度网网站建设的目标
  • 网站内容收费广州知名网站建设
  • 长沙移动网站正规的手游代理平台
  • 色弱做网站应用商城软件下载 app
  • 电子商务网站建设外包服务的企业用手机怎么制作app软件
  • 营销型网站建设的一般过程包括哪些环节网站建设文案模板
  • 朝阳区手机网站制作服务花艺企业网站建设规划
  • 定襄网站建设wordpress 插件 打不开
  • 网站蓝色导航栏代码兰州网络公司网站
  • 微信与与网站建设自定义表情在线制作
  • python工程打包供网站开发调用公司想做个网站怎么办
  • 网站模板间距在建设厅网站怎么办建造师延期
  • 找美工做网站多少钱网页广告关不掉怎么办