All pastes #563601 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-06-13 06:33 UTC
rendered paste body
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys,ldap,string,ldap.modlist as modlist,ldif,Conf

class LdapUserManage:

    def __init__ (self):
        """ Initialise la connexion
        Établit une connexion avec le serveur LDAP en tant qu'administrateur
        Retour : référence vers la connexion
        """
        l = ldap.initialize(LdapUrl)
        l.simple_bind_s("cn=admin,dc=basch,dc=ac-rennes,dc=fr","1&a.!")
        return l


    def getid (self):
        """ Recupère l'identifiant du premier groupe libre
        Récupère sur le serveur LDAP le plus petit gid libre (> 1000)
        Retour : valeur de l'identifiant
        """
        id = l.search_s("cn=index,ou=mygroup,dc=basch,dc=ac-rennes,dc=fr",ldap.SCOPE_SUBTREE,"objectClass=posixGroup",[ "gidNumber" ])
        id = id[0][1]["gidNumber"][0]
        return id


    def incid (self,curentid):
        """ Incrémente l'identifiant de groupe
        Incrémente l'identifiant du plus petit gid libre 
        """
        dn = "cn=index,ou=mygroup,dc=basch,dc=ac-rennes,dc=fr"
        ldif = modlist.modifyModList(old,new)
        l.modify_s(dn,ldif)


    def addUser (self):
        """Ajout d'un utilisateur
        Paramètre : chaine sous la forme 'username;nom;nom;prénom;class;password'
        Soit la chaine est passée en paramèetre du programme
        Soit lue sur l'entrée standard si $1 = '-'
        """
        #Récupération de la chaine contenant les paramètres de l'utilisateur
        if len(sys.argv) == 1:
            print "Erreur, vous devez mettre au moins un paramètre"
            quit()

        if sys.argv[1] == '-':
            ParamUser = sys.stdin.read()
        else:
            ParamUser = sys.argv[1]
        
        ParamUser = ParamUser.strip('\r\n')
        
        id = getid()
        
        a_Param = {}
        #Define attribute from parameters 
        a_Param["uid"],a_Param["sn"],a_Param["givenName"],a_Param["description"],a_Param["userPassword"] = [[x] for x in ParamUser.split(";")]
        #Build missing attributes
        a_Param["objectclass"] = ['inetOrgPerson','posixAccount','shadowAccount','sambaSamAccount']
        a_Param["uidNumber"] = [id]
        a_Param["gidNumber"] = [id]
        a_Param["homeDirectory"] = ['/home/' + a_Param["uid"][0]]
        a_Param["loginShell"] = ['/bin/bash']
        a_Param["cn"] = [a_Param["givenName"][0]+ " " + a_Param["sn"][0]]
        a_Param["sambaSID"] = ['S-1-5-21-4043153765-4081505042-1247131504-512']
        dn = "cn=" + a_Param["cn"][0] +",ou=People,dc=basch,dc=ac-rennes,dc=fr"
        #Ajout à LDAP
        ldi = modlist.addModlist(a_Param)
        l.add_s(dn,ldi)

        c = l.search_s(dn,ldap.SCOPE_SUBTREE,"objectClass=*")
        if len(c) != 0:
            print "Utilisateur "+a_Param["cn"][0]+" ajouté !"

        self.incid(id)





    l.unbind_s()
~                







fred@linux1:~$ ./script.py -
Traceback (most recent call last):
  File "./script.py", line 5, in <module>
    class LdapUserManage:
  File "./script.py", line 76, in LdapUserManage
    self.incid(id)
NameError: name 'self' is not defined

BACKTRACE