|
|
- #!/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()
-
|