如何从 LDAP 中删除所有记录?
How to remove all records from LDAP?
是否可以通过一行命令从 LDAP 中删除所有条目?
我试过了:
ldapdelete -r 'cn=*,dc=domain,dc=com' -w
但它不起作用。我没有更好的主意;/
ldapdelete
是去掉特定的DN,不能使用通配符。
没有本地人"oneliner"。您可以执行 ldapsearch
并将此搜索结果的 DN 列表提供给 ldapdelete
类似于:
ldapsearch -LLL -s one -b "dc=domain,dc=com" "(cn=*)" dn | awk -F": " '~/^\s*dn/{print }' > listOfDNtoRemove.txt && ldapdelete -r -f listOfDNtoRemove.txt
-s one
: ldapsearch
上的这个选项是只检索分支 dc=domain,dc=com
下的第一层 child
-LLL
: 这个选项是有LDIF
格式输出
-r
:这个选项是递归删除之前找到的一级分支及其childs
awk -F": " '~/^\s*dn/{print }'
:这个 awk
是仅打印以 dn:
开头的行并打印 dn
的值
注意:ldapdelete
还从标准输入中读取 DN 列表,因此如果您想避免使用临时文件,可以将 ldapsearch
结果直接通过管道传输到 ldapdelete
使用 HDB 后端
您可以尝试这种方法:转到 /var/lib/ldap
目录并 运行 此命令:
sudo rm __db.* *.bdb log.*
slapd
服务器最好在 运行 执行此命令之前关闭。
确保在执行此操作之前备份文件
使用 MDB 后端
同上,只是文件名不同:
sudo rm *.mdb
是否可以通过一行命令从 LDAP 中删除所有条目?
我试过了:
ldapdelete -r 'cn=*,dc=domain,dc=com' -w
但它不起作用。我没有更好的主意;/
ldapdelete
是去掉特定的DN,不能使用通配符。
没有本地人"oneliner"。您可以执行 ldapsearch
并将此搜索结果的 DN 列表提供给 ldapdelete
类似于:
ldapsearch -LLL -s one -b "dc=domain,dc=com" "(cn=*)" dn | awk -F": " '~/^\s*dn/{print }' > listOfDNtoRemove.txt && ldapdelete -r -f listOfDNtoRemove.txt
-s one
:ldapsearch
上的这个选项是只检索分支dc=domain,dc=com
下的第一层 child
-LLL
: 这个选项是有LDIF
格式输出-r
:这个选项是递归删除之前找到的一级分支及其childsawk -F": " '~/^\s*dn/{print }'
:这个awk
是仅打印以dn:
开头的行并打印dn
的值
注意:ldapdelete
还从标准输入中读取 DN 列表,因此如果您想避免使用临时文件,可以将 ldapsearch
结果直接通过管道传输到 ldapdelete
使用 HDB 后端
您可以尝试这种方法:转到 /var/lib/ldap
目录并 运行 此命令:
sudo rm __db.* *.bdb log.*
slapd
服务器最好在 运行 执行此命令之前关闭。
确保在执行此操作之前备份文件
使用 MDB 后端
同上,只是文件名不同:
sudo rm *.mdb