Я предполагаю, что ваша строка атрибута не экранирована должным образом.Возможно, попробуйте использовать одинарные кавычки и передать точную строку имен.Но вам нужно //
?
Если вы просто сделаете:
puts "CN=TestAMS\\,Henry,OU=Flemington,OU=NJ Region 4,OU=Agents,DC=nj,DC=tri,DC=nrt"
, он выдаст:
CN=TestAMS\,Henry,OU=Flemington,OU=NJ Region 4,OU=Agents,DC=nj,DC=tri,DC=nrt
Так что вы можете избавиться от \
или, если это действительно так, для целевого объекта, который вы хотите переименовать, оставьте его.В ruby вы должны использовать двойные кавычки только тогда, когда вам нужна интерполяция строк.
@net_ldap.rename(
olddn:'CN=TestAMS,Henry,OU=Flemington,OU=NJ Region 4,OU=Agents,DC=nj,DC=tri,DC=nrt',
newrdn:'CN=TestAMS,Henry',
delete_attributes:true,
new_superior:'OU=Terminated Accounts,OU=No Sync,DC=nj,DC=tri,DC=nrt'
)
Но я не уверен, разрешает ли LDAP хэши или слэши в качестве атрибутов.
UPDATE: ruby net / ldapэто просто реализация ruby, но из вашего терминала смотрите:
man ldap
#/name to search for name and we find:
# Distinguished names (DN) (and relative distinguished names (RDN) to be passed to the LDAP routines should conform to
RFC 4514 UTF-8 string representation.
Так что для получения дополнительной информации см. https://datatracker.ietf.org/doc/rfc4514/
Из этого видно, что избавиться от обратных слешей и хэштегов, которые я сделал в моемпример.Но также для получения более подробной информации о том, какие строки необходимо экранировать, см. https://ldap.com/ldap-dns-and-rdns/