Мне нужно создать сценарий jython для извлечения атрибута sAMAccountName из Active Directory и либо сохранить его в таблице базы данных, либо сравнить с существующими данными. Цель состоит в том, чтобы оценить, был ли пользователь удален из группы в AD, и сделать этого пользователя неактивным в Maximo. Сценарий вернет имена учетных записей и установит пользователя Maximo как неактивного для тех пользователей Maximo, которые не возвращены запросом LDAP. Maximo не удаляет или иным образом не изменяет пользователя, если он был удален из AD. Вот код, который я нашел из примера.
# Jython LDAP Example
from javax.naming import *
from java.util import *
from javax.naming.directory import *
# Credentials to access LDAP
user = "cn=binduser,dc=domain,dc=com"
passwd = "password"
# Query starting point and query target
search_start = "dc=domain,dc=com"
search_target = "(&(objectClass=user)(memberof=CN=Maximo,OU=Groups,DC=domain,DC=com))"
#search_attributes = "sAMAccountName"
# Setup LDAP Context Options
settings = Hashtable()
settings.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory")
settings.put(Context.PROVIDER_URL, "ldap://ldapserver:389")
settings.put(Context.SECURITY_PRINCIPAL, user)
settings.put(Context.SECURITY_CREDENTIALS, passwd)
# Connect to LDAP Server
ctx = InitialDirContext(settings)
srch = SearchControls()
srch.setSearchScope(SearchControls.SUBTREE_SCOPE)
# Execute LDAP Search
results = ctx.search(search_start, search_target, srch )
#Display Search`
for result in results:
attributes = result.getAttributes()
names = []
for atr in attributes.getIDs():
if atr == "sAMAccountName":
names.append(str(atr))
for name in names:
print attributes.get(name)
Однако это дает результат: «sAMAccountName: userid».
Как я могу указать ему искать или возвращать только значение sAMAccountName, а не все остальные атрибуты? Прямо сейчас этот скрипт возвращает все атрибуты, связанные с пользователем, которые не требуются, требуется только имя sAMAccountName.
Первая часть — получение только имен учетных записей из LDAP, с которыми я не знаком.
Спасибо!