#!/usr/bin/env python # -*- mode: python -*- # Copyright (c) 1999 Jason Gunthorpe # Copyright (c) 2004 Joey Schulze # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # This script imports arbitary lists of data. The input is a file with # the form of: # uid: import re, time, ldap, getopt, sys; from userdir_ldap import *; # Process options (options, arguments) = getopt.getopt(sys.argv[1:], "u:m:n") for (switch, val) in options: if (switch == '-u'): AdminUser = val elif (switch == '-m'): LoadOverride(val); elif (switch == '-n'): NoAct = 1; if len(arguments) == 0: print "Give the key to assignt to then the file to import"; sys.exit(0) # Main program starts here l = passwdAccessLDAP(BaseDn, AdminUser) List = open(arguments[1],"r"); Set = []; User = None; while(1): Line = List.readline(); if Line != "": # Glob similar lines Split = re.split("[:\n]",Line); if User == None: User = Split[0]; if Split[0] == User: Set.append(Split[1].strip()); continue; else: if len(Set) == 0: break; # 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 = [Split[1].strip()];