如何在 Linux/openldap 服务器上复制 LDAP 条目和所有子树?

如何在 Linux/openldap 服务器上复制 LDAP 条目和所有子树?

我想复制 LDAP 子树:我的软件使用

ou=软件,o=公司,c=fr

我想要使​​用软件的第 2 版

ou=software_v2,o=公司,c=fr

我尝试使用 JXplore 来复制树,这对于开发服务器来说很好,但我需要在数据中心的生产服务器上进行相同的操作。

是否有任何 openldap 命令或脚本可以执行此操作,或者我必须创建它?

谨致问候,
塞德里克

答案1

处理此问题的最佳方法可能是将相关子树导出到 LDIF 文件,调整文件以将 DN 更改为您需要的,然后将 LDIF 文件导入生产环境。有多种方法可以创建 LDIF 文件,其中ldapsearch最常用的是以下方法。获取 LDIF 文件所需的命令可能因使用的 LDAP 服务器而异,但应该类似于此。

ldapsearch -b ou=software,o=company,c=fr -s sub -h host.ldap.server > software.ldif

This assumes you don't need to log in. Pipe output to a file. You can then open the file in whatever tool you wish and change all occurrences of "ou=software,o=" to "ou=software_v2,o=". This can then be used to import.

ldapadd -a -h host.ldap.server -f software.ldif

TLS usage, logins, and strange ports will require different options on both commands, but this should at least get you started.

(Edit) Those fields are base64 encoded. The one you quote in comments has "Côte d'Azur" in the DN. One way to get at the real text is to:

  1. Copy the DN to a simple text file, encode-old.txt
  2. Pipe it through the base64 command, base64 -d encode-old.txt > decoded.txt
  3. 在decode.txt文件中进行所需的更改
  4. 通过 base64 命令将其传回,base64coded.txt > encode-new.txt

显然,这不会很好地扩展,但它显示了如何获取真实文本。使用 sed/awk 或 perl 处理 .ldif 文件以编程方式进行所需的更改可能是最好的选择。

答案2

尽管您已将 sysadmin1138 的回复标记为“回复”,但我仍然想贡献我的想法。在系统上安装“gq”,将其与具有足够权限的 LDAP 服务器帐户连接,然后只需拖放子树(或:“另存为新”)。这很容易,很快而且有效。

gq 是一个 LDAP 浏览器(具有编辑功能),需要 X 服务器。

相关内容