#!/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()
|
|
|
Powered by TurnKey Linux.