OpenLDAP:从cn = config获取`directory`

时间:2014-03-11 15:33:09

标签: bash ldap

如何通过一个ldapsearch请求获取指定 DN 的目录?

我的意思是 - 我的数据库很少。 OpenLDAP 配置了cn=config。对于每个DN - 它都拥有自己的ldif文件,其中指定了olcDbDirectory

我可以获得每个DN的olcDbDirectory值吗?

对于备份脚本 - 我需要设置包含目录的varibale,此变量每次都会针对每个DN进行更改,此时备份/恢复。

所以 - 在bash我刚刚找到了创建函数的解决方案,如:

 #!/bin/bash

 getDir () {
 file=`grep -R "$1" /etc/openldap/slapd.d/ | cut -d":" -f 1 | tail -n 1`
 echo $file

 dir=`cat $file | grep "olcDbDirectory" | awk '{print $2}'`
 echo $dir
 }

 getDir testdb;

 $ ./dn.sh
 /etc/openldap/slapd.d/cn=config/olcDatabase={9}bdb.ldif
 /var/lib/ldap/testdb

但是这个解决方案看起来并不整洁......而且我会优先使用类似的东西:

 getDir () {
 dir=`ldapsearch -x -D "cn-root,cn=config" "*somefilter*"
 }

1 个答案:

答案 0 :(得分:1)

这是:

 $ ldapsearch -x -LLL -D 'cn=root,cn=config' -w PassWord -b 'cn=config' '(&(olcDbDirectory=*)(olcSuffix='testdb'))' olcDbDirectory | grep "olcDbDirectory" | cut -d":" -f 2
 /var/lib/ldap/testdb

在bash函数中:

 #!/bin/bash

 getDir () {

 dirtodel=`ldapsearch -x -LLL -D 'cn=root,cn=config' -w PassWord  -b 'cn=config' '(&(olcDbDirectory=*)(olcSuffix='${1}'))' olcDbDirectory | grep "olcDbDirectory" | cut -d":" -f 2`
 echo $dirtodel
 }

 getDir 'dc=testdb'

结果:

 $ ./dn.sh
 /var/lib/ldap/testdb