基于adsi的面向对象活动目录管理框架
pyad的Python项目详细描述
简介:pyad是一个python库,旨在通过windows平台上的adsi向active directory提供一个简单的python接口。完整的文档可以在http://zakird.github.io/pyad/上找到。代码在https://github.com/zakird/pyad上维护。该库可以从pypi下载,网址为https://pypi.python.org/pypi/pyad。
requirements
===
::
pip install pypiwin32
也可以工作。
连接到活动目录
=============
pyad将连接到计算机加入的活动目录域(rootdse)::
from pyad import aduser
user=aduser.aduser.from_cn(“myuser”)
选项字典中连接到的每个对象的信息。身份验证是通过安全连接执行的,pyad不会通过明文传递凭据。可以在“set_defaults”调用中设置以下选项:“ldap_server”、“gc_server”、“ldap_port”、“gc_port”、“username”、“password”和“ssl”(true/false)。例如,以下代码将为通过pyad访问的所有对象设置默认连接参数:
from pyad import*
pyad.set_defaults(ldap_server=“dc1.domain.com”,username=“service_account”,password=“mypassword”)
user=pyad.aduser.aduser.from_cn(“myuser”)
连接到特定对象时也可以传入选项。这不会设置库的默认值,但这些设置将从从中派生的任何对象(例如,如果您请求用户的组成员资格)中使用示例:
from pyad import aduser
user=aduser.aduser.from_cn(“myuser”,options=dict(ldap_server=“dc1.domain.com”)
>basic object manipulation
======br/>
active目录中有不同类型对象的一阶python类。例如,aduser表示用户对象,adgroup表示组。所有对象都是ADObject的子类。大多数方法都是在ADObject中定义的,但是子类通常提供附加的辅助方法(例如ADUSER有“set_password”,ADGROUP有“add_member”)。
如果您已经知道对象的类型,则可以通过可分辨名称、cn、upn和guid连接到对象。示例:
from pyad import aduser
user1=aduser.aduser.from庠dn(“cn=myuser,ou=staff,dc=domain,dc=com”)
user2=aduser.aduser.from庠cn(“myuser”)
user3=aduser.aduser.from庠guid(“xxx-xxx-xxx”)
对python对象进行适当分类:
from pyad import pyad
user=pyad.from_cn(“user1”)
computer=pyad.from_dn(“cn=ws1,ou=workstations,dc=domain,dc=com”)
group=pyad.from_guid(“xxx-xxx-xxx”)
pyad对象与ADSI接口不同,pyad对象旨在彼此交互。不是将用户的dn添加到组的members属性以添加用户,而是将用户对象添加到组。例如:
user1=aduser.from_cn(“myuser1”)
user2=aduser.from_cn(“myuser2”)
group=adgroup.from_dn(“staff”)
group.add_members([user1,user2])
for user in group.get_members():
print user1.description
仍然可以直接操作pyad提供的helper方法之外的任何属性:
user.set_attribute(“description”,“new description”)
user.append_to_attribute(“member“,”cn=myuser1,ou=staff,dc=domain,dc=com“
有关如何操作找到的对象的详细信息,请参见下一节。
创建、移动和删除对象
在这两种情况下,必须首先绑定到父容器。创建新对象时,需要几个属性,但可以使用“optional_attributes”参数指定其他附加属性。示例1::
ou=adcontainer.from懔dn(“ou=workstations,dc=domain,dc=com”)
scope=“universal”,
可选的“属性”{“描述”:“我们公司的所有IT人员”})
它们可以移动:
computer=adcomputer.from_cn(“ws-500”)
computer.move(adcontainer.from_dn(“ou=workstations,ou=hr,dc=company,
>或更名为:
computer=adcomputer.from_cn(ws-500)
>computer.computer.rename(ws-501)可以通过调用delete():
>
或更名为:
或者更名为:
是的对象可以通过cn、dn、guid或upn直接连接到。但是,也可以通过adquery接口搜索对象(在后台,这是通过cn连接时实际找到对象的方式)。需要注意的是,由于性能原因,adquery接口不会为您提供pyad对象,而只提供您查询的属性。示例:
import pyad.adquery
q=pyad.adquery.adquery()
attributes=[“distinguishedName”,“description”],
where廑子句=“objectClass='*”,
base廑dn=“ou=users,dc=domain,dc=com“
)
对于q中的行,获取结果():
打印行[“distinguishedName”]
许可证
==
pyad是在apache许可证版本2.0(“许可证”)下获得许可的。您可以在http://www.apache.org/licenses/license-2.0.
上获取许可证副本,除非适用法律要求或书面同意,否则根据许可证分发的软件是按“原样”分发的,无任何明示或暗示的保证或条件。请参阅许可证,以了解控制许可证下权限和限制的特定语言。
requirements
===
::
pip install pypiwin32
也可以工作。
连接到活动目录
=============
pyad将连接到计算机加入的活动目录域(rootdse)::
from pyad import aduser
user=aduser.aduser.from_cn(“myuser”)
选项字典中连接到的每个对象的信息。身份验证是通过安全连接执行的,pyad不会通过明文传递凭据。可以在“set_defaults”调用中设置以下选项:“ldap_server”、“gc_server”、“ldap_port”、“gc_port”、“username”、“password”和“ssl”(true/false)。例如,以下代码将为通过pyad访问的所有对象设置默认连接参数:
from pyad import*
pyad.set_defaults(ldap_server=“dc1.domain.com”,username=“service_account”,password=“mypassword”)
user=pyad.aduser.aduser.from_cn(“myuser”)
连接到特定对象时也可以传入选项。这不会设置库的默认值,但这些设置将从从中派生的任何对象(例如,如果您请求用户的组成员资格)中使用示例:
from pyad import aduser
user=aduser.aduser.from_cn(“myuser”,options=dict(ldap_server=“dc1.domain.com”)
>basic object manipulation
======br/>
active目录中有不同类型对象的一阶python类。例如,aduser表示用户对象,adgroup表示组。所有对象都是ADObject的子类。大多数方法都是在ADObject中定义的,但是子类通常提供附加的辅助方法(例如ADUSER有“set_password”,ADGROUP有“add_member”)。
如果您已经知道对象的类型,则可以通过可分辨名称、cn、upn和guid连接到对象。示例:
from pyad import aduser
user1=aduser.aduser.from庠dn(“cn=myuser,ou=staff,dc=domain,dc=com”)
user2=aduser.aduser.from庠cn(“myuser”)
user3=aduser.aduser.from庠guid(“xxx-xxx-xxx”)
对python对象进行适当分类:
from pyad import pyad
user=pyad.from_cn(“user1”)
computer=pyad.from_dn(“cn=ws1,ou=workstations,dc=domain,dc=com”)
group=pyad.from_guid(“xxx-xxx-xxx”)
pyad对象与ADSI接口不同,pyad对象旨在彼此交互。不是将用户的dn添加到组的members属性以添加用户,而是将用户对象添加到组。例如:
user1=aduser.from_cn(“myuser1”)
user2=aduser.from_cn(“myuser2”)
group=adgroup.from_dn(“staff”)
group.add_members([user1,user2])
for user in group.get_members():
print user1.description
仍然可以直接操作pyad提供的helper方法之外的任何属性:
user.append_to_attribute(“member“,”cn=myuser1,ou=staff,dc=domain,dc=com“
有关如何操作找到的对象的详细信息,请参见下一节。
创建、移动和删除对象
在这两种情况下,必须首先绑定到父容器。创建新对象时,需要几个属性,但可以使用“optional_attributes”参数指定其他附加属性。示例1::
ou=adcontainer.from懔dn(“ou=workstations,dc=domain,dc=com”)
scope=“universal”,
可选的“属性”{“描述”:“我们公司的所有IT人员”})
它们可以移动:
computer=adcomputer.from_cn(“ws-500”)
computer.move(adcontainer.from_dn(“ou=workstations,ou=hr,dc=company,
>或更名为:
computer=adcomputer.from_cn(ws-500)
>computer.computer.rename(ws-501)可以通过调用delete():
>
或更名为:
或者更名为:
是的对象可以通过cn、dn、guid或upn直接连接到。但是,也可以通过adquery接口搜索对象(在后台,这是通过cn连接时实际找到对象的方式)。需要注意的是,由于性能原因,adquery接口不会为您提供pyad对象,而只提供您查询的属性。示例:
import pyad.adquery
q=pyad.adquery.adquery()
where廑子句=“objectClass='*”,
base廑dn=“ou=users,dc=domain,dc=com“
)
对于q中的行,获取结果():
打印行[“distinguishedName”]
许可证
==
pyad是在apache许可证版本2.0(“许可证”)下获得许可的。您可以在http://www.apache.org/licenses/license-2.0.
上获取许可证副本,除非适用法律要求或书面同意,否则根据许可证分发的软件是按“原样”分发的,无任何明示或暗示的保证或条件。请参阅许可证,以了解控制许可证下权限和限制的特定语言。