X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-arbimport;h=02430fbd9a715d2fcca432f3b6e310193bbf0de5;hb=bd63e867238eb6d8c5756f43f7e2f4681eb11098;hp=5b64ed83c063d10dc21f81a274b3b2e84c37ea66;hpb=fb6e12faf7e0f8dde1e42b0904a019c30bd68779;p=mirror%2Fuserdir-ldap.git diff --git a/ud-arbimport b/ud-arbimport index 5b64ed8..02430fb 100755 --- a/ud-arbimport +++ b/ud-arbimport @@ -27,19 +27,39 @@ Password = getpass(AdminUser + "'s password: "); # Connect to the ldap server l = ldap.open(LDAPServer); UserDn = "uid=" + AdminUser + "," + BaseDn; -l.simple_bind_s(UserDn,Password); +#l.simple_bind_s(UserDn,Password); List = open(arguments[1],"r"); +Set = []; +User = None; while(1): Line = List.readline(); - if Line == "": - break; - - Split = re.split("[:\n]",Line); + if Line != "": + # Glob similar lines + Split = re.split("[:\n]",Line); + if User == None: + User = Split[0]; + if Split[0] == User: + Set.append(string.strip(Split[1])); + continue; + else: + if len(Set) == 0: + break; - Rec = [(ldap.MOD_REPLACE,arguments[0],string.strip(Split[1]))]; - Dn = "uid=" + Split[0] + "," + BaseDn; + # Generate the command.. + Rec = [(ldap.MOD_REPLACE,arguments[0],Set[0])]; + for x in Set[1:]: + Rec.append((ldap.MOD_ADD,arguments[0],x)) + + Dn = "uid=" + User + "," + BaseDn; try: + print Dn,Rec; l.modify_s(Dn,Rec); except: print "Failed",Dn; + + # Out of data.. + if Line == "": + break; + User = Split[0]; + Set = [string.strip(Split[1])];