我是相當新的Python,我試圖查詢AD服務器,並檢查基於某些屬性(用戶名,firstName,lastName)是否存在用戶和如果該用戶存在查詢他們的組以查看他們是否在特定組中,並且如果沒有,則將他們添加到該組中。我有一個YAML文件,在那裏我存儲用戶的信息,隨着組我想將它們添加在:PyAD AD查詢檢查用戶是否存在,如果不創建它
ADUser:
firstName: <value>
lastName: <value>
username: <value>
email: <value>
group: <value of group I want them to join>
這裏是解析YAML文件中的代碼:
with open("AD.yaml", 'r') as stream:
try:
print(yaml.load(stream))
except yaml.YAMLError as exc:
print(exc)
我正在使用PyAD庫訪問AD並運行我的搜索和用戶創建和組設置。下面是該文檔的鏈接:https://zakird.com/pyad/index.html
這是我開始寫作:
q = pyad.adquery.ADQuery()
q.execute_query(
attributes = (["firstName", <value>],["lastName", <value>],["username", <value>],["email", <value>])
where_clause = "objectClass = '*'",
base_dn = "OU=users, DC=domain, DC=com"
)
這些都是我想要使用用戶創建的方法,組添加和查詢(我想要弄清楚,如果這些好看與否,以及究竟是如何將它們與YAML使用我目前有):
#User Creation
create_user(name, password=None, upn_suffix=None, enable=True, optional_attributes={})
#Find Members of a group
get_memberOfs(recursive=False, scope='all')¶
#Add an object to a group
add_to_group(group)
#Query AD
q = pyad.adquery.ADQuery()
q.execute_query(
attributes = ["distinguishedName", "description"],
where_clause = "objectClass = '*'",
base_dn = "OU=users, DC=domain, DC=com"
)
我只是想知道如果有人能幫助我指向這個應該怎麼設置。不要擔心訪問實際的AD服務器,我只是想象從盒子本身運行這個服務器。
這是我迄今所做的:
with open("AD.yaml", 'r') as stream:
try:
print(yaml.load(stream))
except yaml.YAMLError as exc:
print(exc)
def create_User(new_user, group,):
q = pyad.adquery.ADQuery()
user = q.execute_query(
attributes = ["firstName", "description"],
where_clause = "objectClass = '*'",
base_dn = "OU=users, DC=domain, DC=com"
)
if user == true:
if user.is_member_of(group, "")
logging.info('User is already created and is member of Specified AD Group')
else
user.add_to_group(user, group)
else
new_user = ADUser.create("%firstName", "%lastname", "")
group = ADGroup.from_dn(group)
group.add_member(new_user)
您發佈的Python是不正確,「with」語句都沒有縮進塊。我認爲這是因爲你對這個網站的格式不熟悉,並試圖糾正它。如果結果不是您計算機上的結果,請回滾編輯和/或在此處輸入正確的代碼。 – Anthon