From 4e9c4fa85320e3ab06ea2d6fe2ba5a7866a6693b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Barnouin?= Date: Thu, 4 Jan 2024 16:28:36 +0100 Subject: [PATCH] Can create multiple user at once with ldap2smb --- ldap2smb.py | 78 +++++++++++++++++++++++++++++------------------------ 1 file changed, 43 insertions(+), 35 deletions(-) diff --git a/ldap2smb.py b/ldap2smb.py index 9090de4..530a1b4 100644 --- a/ldap2smb.py +++ b/ldap2smb.py @@ -1,3 +1,4 @@ +import sys import json import getpass @@ -10,6 +11,10 @@ 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) @@ -17,39 +22,42 @@ 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) -data_file="user.json" +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']) -with open(data_file, "r") as file: - ldap_users = json.load(file) - - smb_full_username = ldap_users["params"]["attributes"]["uid"] - smb_username = smb_full_username.split('@', 1)[0] - - smb_full_passwd = ldap_users["params"]["attributes"]["userPassword"] - smb_passwd = smb_full_passwd.split('}', 1)[1] - - 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()