У меня есть следующее дерево в 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 в том порядке, в котором я их написал, работает правильно, но отправка 8 команд удаления для 1 объекта, который я хочу удалить... это не очень элегантно. Я ищу лучший и более элегантный способ сделать это. Я знаю, что не могу удалить запись, под которой есть записи, но я надеюсь найти способ сделать процесс удаления короче и элегантнее.
Я видел вопросы как удалить все записи ldap java, решение это не относится к моей проблеме, так как включает Spring framework
, который мы не используем. Мы планируем интегрировать Spring framework
в наш проект, но это будет ПОСЛЕ того, как нам нужно предоставить это нашему клиенту.
Есть ли способ рекурсивно удалить объект из дерева? например, я отправлю DN объекта (верхней части дерева), который я хочу удалить, и каким-то образом LDAP автоматически удалит его и все записи под ним.
В настоящее время я смотрю на ldapdelete
коммутаторы, чтобы узнать, может ли кто-нибудь из них помочь мне в этом.
Я буду признателен за любую помощь.
ldapdelete
должно быть в опциях. Это часть магии, которую вы вкладываете в запрос, но она требует наличия необязательного оверлея, например, в случае сервера OpenLDAP. - person user207421   schedule 30.07.2017