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

#!/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.