如何递归删除 LDAP 中的实体

How can I delete an entity in LDAP recursively

我在 LDAP 中有以下树

Legend
$Msisdn = 13217654321   // 11 digits phone number: (contry)+(area)+(number) 
$Imsi   = 999888000007777   // standard 15 digits IMSI number
$MobileDomain = ims.mnc888.mcc999.3gppnetwork.org

+ HssNodeName
| + HSS
| | + HSS-Subscribers
| | | + HSS-Subscriber (HSS-SubscriberID=$Msisdn@$MobileDomain)
| | | | + HSS-User (HSS-PrivateUserId=$Imsi)
| | | |   + HSS-Msisdn (HSS-Msisdn=$Msisdn)
| | | | + HSS-SubscriberServiceProfile
| | | | + HSS-PublicIdentificationData (sip:$Imsi@$MobileDomain)
| | | | + HSS-PublicIdentificationData (sip:\+$Msisdn@$MobileDomain)
| | | | + HSS-PublicIdentificationData (tel:\+$Msisdn)

我需要删除 HSS-Subscriber 及其下的所有实体。我有包含以下命令的 LDIF 文件(每个 LDIF 文件包含 1 个命令):

** PublicIdentificationDataTel.ldif **
dn: HSS-PublicIdValue=tel:\+$Msisdn,
    HSS-SubscriberID=$Msisdn@$MobileDomain,
    HSS-SubscriberContainerName=HSS-Subscribers,
    applicationName=HSS,nodeName=HssNodeName
changeType: delete

** PublicIdentificationDataSip2.ldif **
dn: HSS-PublicIdValue=sip:\+$Msisdn@$MobileDomain,
    HSS-SubscriberID=$Msisdn@$MobileDomain,
    HSS-SubscriberContainerName=HSS-Subscribers,
    applicationName=HSS,nodeName=HssNodeName
changeType: delete

** PublicIdentificationDataSip1.ldif **
dn: HSS-PublicIdValue=sip:$Imsi@$MobileDomain, 
    HSS-SubscriberID=$Msisdn@$MobileDomain,
    HSS-SubscriberContainerName=HSS-Subscribers,
    applicationName=HSS,nodeName=HssNodeName

** SubscriberServiceProfile.ldif **
dn: HSS-SubscriberServiceProfileId=SubServProf$Msisdn,
    HSS-SubscriberID= $Msisdn@$MobileDomain,
    HSS-SubscriberContainerName=HSS-Subscribers,
    applicationName=HSS,nodeName=HssNodeName
changetype: delete

** MsIsdn.ldif **
dn: HSS-Msisdn=$Msisdn,
    HSS-PrivateUserID=$Imsi@$MobileDomain,
    HSS-SubscriberID=$Msisdn@$MobileDomain,
    HSS-SubscriberContainerName=HSS-Subscribers,
    applicationName=HSS,nodeName=HssNodeName
changeType: delete

** HssUser.ldif **
dn: HSS-PrivateUserID=$Imsi,
    HSS-SubscriberId=$Msisdn@$MobileDomain, 
    HSS-SubscriberContainerName=HSS-Subscribers,
    applicationName=HSS,nodeName=HssNodeName
changeType: delete

** HssSubscriber.ldif **
dn: HSS-SubscriberId=$Msisdn@$MobileDomain,
    HSS-SubscriberContainerName=HSS-Subscribers,
    applicationName=HSS,nodeName=$NODENAME
changeType: delete

运行 上述 LDIF 文件按照我编写的顺序工作正常,但是为我要删除的 1 个对象发送 8 个删除命令...这不是很优雅。我正在寻找一种更好、更优雅的方法来做到这一点。我知道我不能删除下面有条目的条目,但我希望找到一种方法使我的删除过程更短、更优雅。

我看到了问题 how to delete all entries ldap java,那里的解决方案不适用于我的问题,因为它涉及我们不使用的 Spring framework。有计划将 Spring framework 集成到我们的项目中,但我们需要在 之后为我们的客户交付它。

有没有办法递归地从树中删除一个实体?例如,我将发送我要删除的对象(树的顶部)的 DN,LDAP 将以某种方式自动删除它和它下面的所有条目。

我目前正在查看 ldapdelete 开关,看看是否有任何开关可以帮助我解决这个问题。

如有任何帮助,我将不胜感激。

由于 LDAP 服务器不支持 TreeDelete 扩展操作,因此没有解决方案。