You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.6 KiB

6 years ago
6 years ago
  1. #!/usr/bin/python2
  2. # coding=utf-8
  3. import ldb
  4. from samba.samdb import SamDB
  5. from samba.auth import system_session
  6. # from samba.ndr import ndr_pack, ndr_unpack
  7. # from samba.dcerpc import security
  8. import samba.param
  9. # import base64
  10. # import binascii
  11. from UserAd_class import UserAd
  12. base = "CN=Users,DC=techgrow,DC=local" # можно не заморачиваться с ОУ и тогда base = "CN=Users,DC=myDom,DC=lan"
  13. domainName = 'techgrow.local'
  14. def users_make_ad(sam, base):
  15. expression = "(&(objectCategory=person)(objectClass=user))"
  16. users = {}
  17. res = sam.search(base=base, expression=expression, attrs=['*', 'userAccountControl'])
  18. for i in res:
  19. enabled = 0
  20. if int(str(i['userAccountControl'])) & 2 == 0:
  21. enabled = 1
  22. memberOf = []
  23. for k in i['memberOf']:
  24. memberOf.append(str(k).split(',')[0].split('=')[1])
  25. users[str(i['samAccountName'])] = {'samAccountName': str(i['samAccountName']),
  26. 'memberOf': memberOf,
  27. 'userAccountControl': int(str(i['userAccountControl'])),
  28. 'enabled': enabled}
  29. return users
  30. def main():
  31. lp = samba.param.LoadParm()
  32. lp.load(samba.param.default_path()) # или lp.load("/etc/samba/smb.conf")
  33. sam = SamDB(lp=lp, session_info=system_session())
  34. print(users_make_ad(sam, base))
  35. test_usr = UserAd(sam, base, domainName, 'tst', "secret34daD")
  36. print test_usr.memberOf
  37. err = test_usr.set_passwd()
  38. if err:
  39. print err
  40. if __name__ == '__main__':
  41. main()

Powered by TurnKey Linux.