基于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.


上获取许可证副本,除非适用法律要求或书面同意,否则根据许可证分发的软件是按“原样”分发的,无任何明示或暗示的保证或条件。请参阅许可证,以了解控制许可证下权限和限制的特定语言。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用PostgreSQL java的jooq批量/批更新   java如何从数据库读取密钥库   从REST API返回ResponseEntity<byte[]>时出现java问题。为什么?   JavaApacheFop使用PDF服务中的数据   java读取在线xml文件并对其进行解析   我试图通过jdbc连接MySQL数据库,但代码抛出错误“java.lang.ClassNotFoundException:com.MySQL.jdbc.Driver”   java使用中心点(非左上角)绘制椭圆   java Android应用程序不在设备或模拟器上运行?   java JSR是什么意思   java会话bean为什么这么叫?   java如何获取jar外部文件的Url?   java Mockito with Robolectric:“创建代理时发生ClassCastException”   java在getter方法中使用模式匹配器来格式化日期/删除毫秒   java在数据库中对JTextField的每次击键进行调用搜索   在linux上用java运行shell脚本   JAVAutil。扫描器如何在Java中计算字符串中指定字符的实例?   java永远无法实现以下替代方案:2   java Createwindowex无效句柄错误