我正在运行带有模块back_ldap的OpenLDAP 2.4.44作为MS-AD-Servers的LDAP代理(详细信息请参阅: 作为Active Directory代理的openLDAP )。
现在我需要将AD-Server中的模式添加到OpenLDAP-Server中,并且我已经使用ldapsearch将MS-AD-Server中的模式导出到ldif文件中(详情请参阅: 如何从服务器获取模式信息? )。
现在我需要将ldif格式转换为OpenLDAP slapd.conf的模式格式。 无法使用ldapadd加载ldif,因为OpenLDAP以代理模式运行,所以每个请求都将被转发到MS-AD-Server。
如何将ldif文件转换为模式文件? 有没有任何工具。 或者如何添加一个通过slapd.conf加载的ldif文件。
你需要做的是去除属性dn , cn和objectClass并分别replace所有的olcAttributeTypes:和olcObjectClasses: attributetype和objectclass 。
你也可以通过shell来完成。
Linux shell上的单行程:
sed '/^dn: /d;/^objectClass: /d;/^cn: /d;s/olcAttributeTypes:/attributetype/g;s/olcObjectClasses:/objectclass/g' file.ldif > file.schema
在Windows PowerShell中相应的命令:
Get-Content file.ldif | Where { $_ -notmatch "^dn: " } | Where { $_ -notmatch "^objectClass: " } | Where { $_ -notmatch "^cn: " } | %{ $_ -replace "olcObjectClasses:", "objectclass" } | %{ $_ -replace "olcAttributeTypes:", "attributetype" } | Out-File file.schema