如何通过一个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*"
}
答案 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