From: Oleg P. <o....@dp...> - 2005-09-29 16:47:19
|
Thu, Sep 29, 2005 at 02:55:07PM +0200, pyt...@li...urce= forge.net =CE=C1=D0=C9=D3=C1=CC: > I want to move user Tester from TestGroup1 to TestGroup2 in Active=20 > Directory with py-24-ldap2-2.0.7, python-2.4.1. > I can not guess how I can do this. > With modify_s? I tryed following variant, sorry for a huge code posting: import ldap,sys,re class ADS_if: ..... def open_connection(self): try: ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_= NEVER) ldap.set_option(ldap.OPT_REFERRALS, 0) self.ldap_h =3D ldap.initialize("ldaps://%s"%self.server) self.ldap_h.simple_bind_s(self.user, self.password) except ldap.LDAPError, error_message: print >> sys.stderr, "Couldn't Connect to %s@%s. %s " % (err= or_message, self.user, self.server) sys.exit(1) def getDN(self, user, enc=3D'koi8-r'): self.open_connection() user =3D unicode(user, enc) filter =3D "sAMAccountName=3D%s"%user.encode('utf-8') count =3D 0 result_set =3D [] result_id =3D self.ldap_h.search(self.base, self.scope, filter,= self.retrieve_attributes) i =3D 0 result_type, result_data =3D self.ldap_h.result(result_id, self= .timeout) if result_type =3D=3D ldap.RES_SEARCH_ENTRY: result_set.append(result_data) if len(result_set)=3D=3D0: print 'No such user: %s'%user return [] else: return unicode(result_set[0][0][0],'utf-8') =20 def delUserFromGroup(self, user, group, enc=3D'koi8-u'): userDN=3Dself.getDN(user, enc) groupDN=3Dself.getDN(group, enc) print 'dn=3D"%s"'%userDN.encode(enc) print 'group=3D"%s"'%groupDN.encode(enc) self.ldap_h.modify_s(userDN.encode('utf-8'), [(ldap.MOD_DELETE,= 'memberOf',groupDN.encode('utf-8'))]) =20 >>> from ADS import ADS_if >>> lh =3D ADS_if() >>> lh.delUserFromGroup('spd.student','For_install') dn=3D"CN=3D=F3=D4=D5=C4=C5=CE=D4 =F3=F0=E4,OU=3D=B6=F3=E3=ED=F0=E4,OU=3D=B6= =F3=E3,DC=3Ddp,DC=3Duz,DC=3Dgov,DC=3Dua" group=3D"CN=3DFor_install,CN=3DUsers,DC=3Ddp,DC=3Duz,DC=3Dgov,DC=3Dua" Traceback (most recent call last): File "<stdin>", line 1, in ? File "ADS.py", line 136, in delUserFromGroup self.ldap_h.modify_s(userDN.encode('utf-8'), [(ldap.MOD_DELETE,'membe= rOf',groupDN.encode('utf-8'))]) ............. ldap.UNWILLING_TO_PERFORM: {'info': '0000209A: SvcErr: DSID-031A0983, pro= blem 5003 (WILL_NOT_PERFORM), data 0\n', 'desc': 'Server is unwilling to = perform'} am I in a right way :) ? and how can I fix my program to avoid this error? Thanks for any help. --=20 Best regards, Palij Oleg, ISC (Pridn railway)=20 xmpp://ma...@ja... |