【发布时间】:2016-12-16 16:04:23
【问题描述】:
我需要创建一个 jython 脚本来从 Active Directory 中检索 sAMAccountName 属性,并将其存储在数据库表中和/或根据现有数据对其进行评估。目的是评估用户是否已从 AD 中的组中删除,并在 Maximo 中将该用户设置为非活动状态。该脚本将返回帐户名称,并将 Maximo 用户设置为未通过 LDAP 查询返回的那些 Maximo 用户。从 AD 中删除用户后,Maximo 不会删除或以其他方式修改用户。这是到目前为止我从示例中找到的代码。
# 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 中检索我不熟悉的帐户名称。
谢谢!
【问题讨论】: