2017-04-17 143 views
1

我正在尝试从用户输入创建一个变量。然后让搜索过滤器使用该变量。LDAP SearchFilter CN来自用户输入定义的变量名称

以下是我的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

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

第一步 - 而不是

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 
+0

现在我看到后面:-)逻辑但我得到以下错误: “((objectClass的=电脑)!)” \ ^ 语法错误:无效的语法。它不喜欢最后双引号 – Xtos

+0

哦,还有不平衡的括号!我编辑了我的答案,以便*整个*搜索字符串被分配给一个字符串变量 - 我测试了它,现在它可以工作。 – MarianD

+0

现在就像一个魅力! – Xtos