Я пытаюсь проверить, если пользователь является членом группы Active Directory, и у меня есть это:Поиск частичных строк в списке строк - питон
ldap.set_option(ldap.OPT_REFERRALS, 0)
try:
con = ldap.initialize(LDAP_URL)
con.simple_bind_s(userid+"@"+ad_settings.AD_DNS_NAME, password)
ADUser = con.search_ext_s(ad_settings.AD_SEARCH_DN, ldap.SCOPE_SUBTREE, \
"sAMAccountName=%s" % userid, ad_settings.AD_SEARCH_FIELDS)[0][1]
except ldap.LDAPError:
return None
ADUser
возвращает список строк:
{'givenName': ['xxxxx'],
'mail': ['[email protected]'],
'memberOf': ['CN=group1,OU=Projects,OU=Office,OU=company,DC=domain,DC=com',
'CN=group2,OU=Projects,OU=Office,OU=company,DC=domain,DC=com',
'CN=group3,OU=Projects,OU=Office,OU=company,DC=domain,DC=com',
'CN=group4,OU=Projects,OU=Office,OU=company,DC=domain,DC=com'],
'sAMAccountName': ['myloginid'],
'sn': ['Xxxxxxxx']}
Конечно, в реальном мире имена групп многословны и различной структуры, а пользователи будут принадлежать десяткам или сотням групп.
Если я получу список групп из ADUser.get('memberOf')[0]
, что лучше всего проверить, существуют ли какие-либо члены отдельного списка в главном списке?
Например, контрольный список будет ['group2', 'group16']
, и я хочу, чтобы получить истинный/ложный ответ на вопросе, является ли любого меньшего списка существует в основном списке.
Определение anyof() с булевым возвратом является совершенным. поиск в списке быстрее, чем время ожидания сети, чтобы дать мне список в первую очередь, так что производительность в порядке. –