提前道歉如果这个问题已经被问到,已经做了一些搜索,但没有运气。在
尝试将元组的第二部分作为字符串拉出。在
我正在用python3构建一个脚本,它从LDAP中提取信息并返回希望是可操作的数据。在
def GetMembersWDept():
i2 = input('Please input the department number. Examples: 2410, 2417\n')
criteria = '(&(objectClass=User)(department=' + i2 + '*))'
print ('Search criteria set to: \t\t' + criteria)
searchDC = 'dc=example,dc=com'
print ('Searching location: \t\t\t' + searchDC)
print ()
out = []
result = c.search(searchDC, criteria, \
SEARCH_SCOPE_WHOLE_SUBTREE, attributes = ['department']) \
# request a few object from the ldap server
if result:
for r in c.response:
if (r['type'] == 'searchResEntry'):
out.append(r['dn'])
out.append(r['attributes']) # comes out in tuple form
else:
pass
else:
print('result', conn.result)
return out
这对于提取该部门成员的CN很有效,但对于提取附加的任何附加信息(在本例中是department)。在
示例输出为:
搜索条件设置为:(&;(objectClass=User)(department=2417*) 搜索位置:dc=ple,dc=com
['CN=First Last,OU=ex,OU=am,DC=ple,DC=com', {'department': ['1234']}, 'CN=Another Person,OU=ex,OU=am,DC=ple,DC=com', {'department': ['1234']}]
如何将元组的第二部分,即“1234”作为字符串来提取?这里的最后一步是将数据格式化为:
[First Last, 1234, Another Person, 1234]
。。。所以我可以在另一个函数中使用它来比较部门,如果不满足条件则返回名称。在
如果输出为:
然后可以将其设置为
^{pr2}$newresult
,然后执行以下操作:这假设列表中包含部门的元素始终位于位置1,字典中始终有1个值,并且您需要的部门编号是列表中的唯一项。在
IMHO,使用}会更简单,除非您有充分的理由这样做(或者您应该展示您是如何创建响应的)。在
c.search_s
而不是{从python ldap文档:
search_s
直接返回一个2元组的列表(dn,attrs),其中dn是一个包含条目的dn(可分辨名称)的字符串,attrs是一个包含与条目相关联的属性的字典。attr的键是字符串,相关的值是字符串列表所以对于每个元组
entry
你有:相关问题 更多 >
编程相关推荐