2017-04-17 115 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