#!/usr/bin/python2 # coding=utf-8 import ldb from samba.samdb import SamDB from samba.auth import system_session # from samba.ndr import ndr_pack, ndr_unpack # from samba.dcerpc import security import samba.param # import base64 # import binascii from UserAd_class import UserAd base = "CN=Users,DC=techgrow,DC=local" # можно не заморачиваться с ОУ и тогда base = "CN=Users,DC=myDom,DC=lan" domainName = 'techgrow.local' def users_make_ad(sam, base): expression = "(&(objectCategory=person)(objectClass=user))" users = {} res = sam.search(base=base, expression=expression, attrs=['*', 'userAccountControl']) for i in res: enabled = 0 if int(str(i['userAccountControl'])) & 2 == 0: enabled = 1 memberOf = [] for k in i['memberOf']: memberOf.append(str(k).split(',')[0].split('=')[1]) users[str(i['samAccountName'])] = {'samAccountName': str(i['samAccountName']), 'memberOf': memberOf, 'userAccountControl': int(str(i['userAccountControl'])), 'enabled': enabled} return users def main(): lp = samba.param.LoadParm() lp.load(samba.param.default_path()) # или lp.load("/etc/samba/smb.conf") sam = SamDB(lp=lp, session_info=system_session()) print(users_make_ad(sam, base)) test_usr = UserAd(sam, base, domainName, 'tst', "secret34daD") print test_usr.memberOf err = test_usr.set_passwd() if err: print err if __name__ == '__main__': main()