gpt4 book ai didi

python - PyAD AD 查询检查用户是否存在(如果不创建)

转载 作者:行者123 更新时间:2023-12-01 03:11:20 25 4
gpt4 key购买 nike

我对 Python 相当陌生,我正在尝试查询 AD 服务器并根据某些属性(用户名、名字、姓氏)检查用户是否存在,如果该用户存在,则查询其组以查看他们是否存在位于特定组中,如果不在特定组中,则将它们添加到该组中。我有一个 YAML 文件,我在其中存储用户的信息以及我想要将其添加到的组:

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)

最佳答案

您正在加载用户信息,但只是打印它。您至少应该存储它以供进一步使用。除此之外,绝对没有必要使用不安全的 yaml.load()

from ruamel import yaml

with open("AD.yaml", 'r') as stream:
try:
data = yaml.load(stream)
print(data)
except yaml.YAMLError as exc:
print(exc)

这样你就可以调用你的方法了:

 user = data['AdUser']
create_User(user['username'], user['group'])

除了不使用 yaml.load() 之外,还有一些事情需要考虑:

  • 在Python中,您不应该在自己编写的方法中使用camel_case(某些库符合非Pythonesc特定的大小写),因此将create_User更改为create_user
  • create_user 添加参数,用于您想要注册的其他内容(电子邮件等)
  • 考虑将文件的顶层设置为一个序列,以便您可以迭代从 YAML 加载的数据并一次性注册多个用户

    - firstName: <value>
    lastName: <value>
    username: <value>
    email: <value>
    group: <value>
    - firstName: <value>
    lastName: <value>
    username: <value>
    email: <value>
    group: <value>

    然后执行:

    for user in data:
    create_user(user['username'], user['group'])

关于python - PyAD AD 查询检查用户是否存在(如果不创建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42876225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com