如何递归删除 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 扩展操作,因此没有解决方案。
我在 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 扩展操作,因此没有解决方案。