import sys import json import getpass import ldb from samba.auth import system_session from samba.credentials import Credentials from samba.dcerpc import security from samba.dcerpc.security import dom_sid from samba.ndr import ndr_pack, ndr_unpack from samba.param import LoadParm from samba.samdb import SamDB global lp global creds global samdb lp = LoadParm() creds = Credentials() creds.guess(lp) creds.set_username('admin') creds.set_password('Jps55Sk8An9y2nVL') samdb = SamDB(url='/var/lib/samba/private/sam.ldb', session_info=system_session(),credentials=creds, lp=lp) def adduser(): with open(DATA_FILE, "r", encoding="utf8") as file: ldap_users = json.load(file) smb_full_username = ldap_users["params"]["attributes"]["uid"] smb_username = smb_full_username.split('@', 1)[0] smb_passwd = ldap_users["params"]["attributes"]["userPassword"] smb_givenname = ldap_users["params"]["attributes"]["givenName"] smb_surname = ldap_users["params"]["attributes"]["sn"] smb_homedir = ldap_users["params"]["attributes"]["homeDirectory"] smb_mail = ldap_users["params"]["attributes"]["mail"] smb_uid_number = ldap_users["params"]["attributes"]["uidNumber"] smb_gid_number = ldap_users["params"]["attributes"]["gidNumber"] samdb.newuser( username=smb_username, password=smb_passwd, givenname=smb_givenname, surname=smb_surname, homedirectory=smb_homedir, mailaddress=smb_mail, uidnumber=smb_uid_number, gidnumber=smb_gid_number, useusernameascn=True ) query = "(objectclass=user)" result = samdb.search('DC=nantes,DC=omero-fbi,DC=fr', expression=query, scope=ldb.SCOPE_SUBTREE) for item in result: if 'sAMAccountName' in item: print(item['distinguishedName']) print(item['sAMAccountName']) for arg in sys.argv[1:]: print(arg) DATA_FILE = arg adduser()