LDAP SearchFilter CN Name来自用户输入定义的变量

时间:2017-04-17 15:06:22

标签: python ldap

我正在尝试从用户输入创建变量。然后让搜索过滤器使用该变量。

以下是我的python脚本中的一些代码,当名称在" John Doe"中被硬编码时,它成功地从AD目录中检索CN名称和电子邮件。

retrieveAttributes = ["name"] and ["mail"]
searchFilter = "(&(name=John Doe)" \
               "(!(objectClass=computer))" \
               "(&(objectClass=person)))"

通过创建名为" adname"的用户输入变量,我能够做到这一点,但不知道如何使SearchFilter名称使用变量" adname":

adname = raw_input("Search CN Name:")
 print adname
 retrieveAttributes = ["name"] and ["mail"]
 searchFilter = "(&(name = adname)" \
           "(!(objectClass=computer))" \
           "(&(objectClass=person)))"

非常感谢任何见解,

由于

1 个答案:

答案 0 :(得分:1)

将搜索字符串准备为字符串变量

第一步 - 而不是

searchFilter = "(&(name=John Doe)" \
               "(!(objectClass=computer))" \
               "(&(objectClass=person)))"

你可以使用

search       = "(&(name=John Doe)" \
               "(!(objectClass=computer))" \
               "(&(objectClass=person)))"

searchFilter = search

现在准备搜索包含输入中的名称是没有问题的:

search       = "(&(name={})" \
               "(!(objectClass=computer))" \
               "(&(objectClass=person)))"  \
               .format(adname)           # replaces {} with the content of adname

并使用相同的搜索过滤器:

searchFilter = search