1SIO 2015/2016 Projet Introduction Il s’agit ici d’utiliser l’annuaire d’un serveur Windows Active Directory pour créer automatiquement les comptes utilisateurs du système de gestion de bases de données (SGBD) de l’entreprise STESIO. Il est possible de récupérer la liste des utilisateurs dans un fichier texte et de générer un script contenant des ordres SQL de création des comptes. Ce script sera ensuite exécuté sur le SGBD Oracle. C’est un programme écrit en Python qui générera le script SQL à partir du fichier texte. Ce script SQL sera exécuté dans le SGBD Oracle pour créer les utilisateurs. Les grandes étapes du projet : Extraction de la liste des utilisateurs de l'AD (OU_Utilisateurs > sous OU_Toulouse) dans un fichier texte appelé "Toulouse.txt". Création, à partir du fichier "Toulouse.txt" et en langage Python, d'un programme permettant de générer un script contenant les requêtes SQL de création des comptes de l'AD nommé "GénérerScriptCreate.py". Exécution du script, avec l'aide de l'outils SQL Developer, dans la SGBD Oracle sous la forme d'un fichier SQL appelé "creerUtilisateurs.sql". Création automatique des utilisateurs Oracle. Ce projet aura été réalisé en binôme, sur une période de trois jours. La réalisation du projet implique de posséder une machine virtuelle Linux Xubuntu tournant sous VirtualBox, l'Environnement de Développement Intégré (IDE) Netbeans, le logiciel LDAP Administrator, un service LAMP, l'outil SQL Developer … . Ce guide relate, la documentation relative à l'aboutissement du projet de l'étape 1 à l'étape 11 selon les directives du cahier des charges fourni en annexe. Étape 1 : Préparation de l’environnement de développement Il faut, tout d'abord, vérifier l’installation de Python sur sa machine Xubuntu et l’intégrer à son environnement de développement NetBeans. Quelles sont les deux versions de python installées sur votre machine virtuelle Xubuntu ? Une unique version 2.7.6 du langage de programmation python est installé sur ma machine virtuelle Xubuntu, information obtenue par exécution de la commande suivante : 1 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Pour permettre le développement en python, il faut installer un module additionnel de NetBeans. Les plugins Netbeans nécessaires sont téléchargeables à cette adresse : http://plugins.netbeans.org/plugin/56795. Plus concrètement, dans Netbeans, il faut aller récupérer et installer les plugins téléchargés : Pour tout complément d'informations, se référer au site suivant : https://blogs.oracle.com/geertjan/entry/python_in_netbeans_ide_81 Sous Netbeans, créez un projet python "projetpython1sio" ; associez la version la plus récente de la plateforme python à ce projet. Création du projet Python sous Netbeans : 2 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Recherchez un site de référence pour le langage python dans la version choisie. Il existe de nombreux site de référence pour le langage python comme, par exemple, openclassrooms.com, wiki.python.org…etc. Étape 2 : Lecture et écriture dans un fichier texte en Python Cette étape a pour but de vous former aux commandes Python permettant de lire et d’écrire dans un fichier texte (Cf. doc. Python). Enregistrez les lignes suivantes dans un fichier “testEntree.txt” : Emile;ZOLA Victor;HUGO George;SAND Création du fichier "testEntree.txt" : Réalisez ensuite un programme effectuant les actions suivantes : Ouvrir le fichier testEntree.txt en lecture et un fichier testSortie.txt en écriture. En langage python : open('testEntree.txt', 'r') open('testSortie.txt', 'w') 3 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Avant l'exécution du programme python : Pour chaque ligne du fichier testEntree.txt : ○ extraire la première lettre du premier mot et le deuxième mot pour les concaténer ○ convertir la chaîne obtenue en minuscules ○ écrire cette chaîne dans le fichier testSortie.txt Code source commenté : from os import chdir # Importer la commande chdir du module os. chdir("/home/btssio/Bureau/PARTAGE/onlemetla/") # Spécifie le répertoire courant. f=open('testEntree.txt', 'r') # Ouvre le fichier "testEntree" en mode lecture. g=open('testSortie.text','w' ) # Créer ou ouvre le fichier "testSortie" en mode écriture. for t in f: # Boucle permettant de lire chaque lignes (t) du fichier. print (t) # Se réfère à une ligne. tMots=t.split(';') # Eclate la chaine de caractère point-virgule. pl=tMots[0][0] # Prend la première lettre du premier mot. print (pl) # Inscrit la première lettre. nom=tMots[1] # Prend le second mot en entier. pl=pl.lower() # Convertie en minuscule. nom=nom.lower() # Convertie en minuscule. g.write(pl+nom) # Ecrit dans le fichier "testSortie" le contenu de nom. f.close() # Ferme le fichier "testEntree.txt". g.close() # Ferme le fichier "testSortie.txt". 4 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Après l'exécution du programme python, voici le contenu du fichier "testSortie.txt" : Étape 3 : Création d’un utilisateur dans une base de données en SQL Recherchez les ordres SQL pour créer un utilisateur Oracle capable de se connecter et de créer une table. CREATE USER utilisateur; # Création d'un utilisateur de la base de données. IDENTIFIED BY mdp; # Définition du mode d'authentification de l'utilisateur créé. GRANT CONNECT TO utilisateur; # Autoriser l'utilisateur à se connecter à la base de donnée. Ce droit est vérifié à la connexion. GRANT CREATE TABLE TO utilisateur; # Autoriser l'utilisateur à créer une table dans la base de données. Testez ces commandes pour l'utilisateur « test1sio », mot de passe « secret » et vérifiez qu'il peut se connecter et créer une table. CREATE USER test1sio; IDENTIFIED BY secret; GRANT CONNECT TO test1sio; GRANT CREATE TABLE TO test1sio; 5 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Avec l'exécution de ces commandes SQL, l’utilisateur a bien été créé dans la base de données : L’utilisateur possède donc le droit de création de table en conformité avec les commandes effectuées précédemment : Étape 4 : Extraction du fichier texte des utilisateurs Vous allez maintenant extraire des informations (dont les noms et prénoms) de l’annuaire d’un serveur de domaine Windows, qui permettront ensuite de créer les comptes utilisateurs Oracle. Pour se connecter à l’annuaire Active Directory du serveur Stesio, vous utiliserez le logiciel “LDAPAdministrator” de l’éditeur “Softerra”. Sur une VM Windows7 : Télécharger et installer LDAP Administrator : 6 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Dans LDAP Administrator, au niveau Local Servers, créer un nouveau profil pour vous connecter à l’ActiveDirectory du serveur STESIO. Vous extrairez le fichier des utilisateurs de Toulouse comme suit : - Développez le noeud STESIO, puis l’unité d’organisation “Finances/Toulouse” - Sélectionnez le noeud “Utilisateurs” : cliquez droit sur “All Task/Export Data” au format “Plain text, puis dans Attribute Set précisez les attributs qui vous intéressent (cn et givenname), et enfin précisez le “;” (semicolon) comme séparateur de champ. 7 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 On obtient un fichier comme celui-ci qui pourra alors être envoyé par mail dans ça machine Linux de développement : Étape 5 : Programme Python de génération du script SQL CREATE Vous devez réaliser une première version du programme Python demandé : « genererScriptCreate.py ». Données du programme : le fichier texte que vous avez récupéré « toulouse.txt ». Résultat : le script SQL de création des utilisateurs nommé « creerUtilisateurs.sql » ; chaque utilisateur doit pouvoir se connecter et créer des tables. Le compte Oracle sera de la forme première lettre du prénom suivie du nom. Exemple : l’utilisateur “Alain LAMBERT” doit avoir le compte Oracle “ALAMBERT”. Création du fichier python nommé "genererScriptCreate.py" sous Netbeans : 8 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Programme python, "genererScriptCreate.py", commenté : from os import chdir # Importer la commande chdir du module os. chdir("/home/btssio/Bureau/PARTAGE/onlemetla/") # Spécifie le répertoire courant. f=open('toulouse.txt','r') # Ouvre le fichier "toulouse.txt" en mode lecture. g=open("creerUtilisateurs.sql","w") # Créer ou ouvre le fichier "creerUtilisateurs.sql" en mode écriture. for t in f: # Boucle permettant de lire chaque lignes (t) du fichier. print (t) # Affiche le contenue de la ligne. tMots=t.split('"') # Fractionne la chaine de caractère en mots. pl=tMots[3][0] # Prend la première lettre du premier mot. print (pl) # Affiche la première lettre. nom=tMots[5] # Prend le second mot en entier. pl=pl.lower() # Convertie en minuscule. nom=nom.lower() # Convertie en minuscule. g.write("CREATE USER") # Ecrit "CREATE USER" qui permet de créer un utilisateur de la SGBD. g.write(pl+nom) # Ecrit dans le fichier de sortie. g.write("\n") # Saute une ligne. g.write("IDENTIFIED BY\n") # Ecrit " IDENTIFIED BY" qui permet à l'utilisateur de se connecter avec un mot de passe. g.write("GRANT CONNECT TO\n") # Ecrit " GRANT CONNECT TO" qui autorise l'utilisateur à se connecter à la base de donnée. Ce droit est vérifié à la connexion. g.write("GRANT CREATE TABLE TO\n") # Ecrit " GRANT CREATE TABLE TO" qui donne le droit à l'utilisateur de créer une table. g.write("GRANT UNLIMITED TABLESPACE TO\n") g.write(pl+nom) # Ecrit dans le fichier de sortie. g.write("\n") # Saute une ligne. f.close() # Ferme le fichier "toulouse.txt". g.close() # Ferme le fichier "creerUtilisateurs.sql". Voici une partie du script obtenu : Étape 6 : Test du script SQL CREATE Exécutez le script généré « creerUtilisateurs.sql » sur votre serveur Oracle local. 9 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 On peut utiliser l'outil SQL Developer pour importe le fichier "creerUtilisateurs.sql" et l’exécuter : L'utilisateur MBERNARD a été créé avec succès : Réalisez ensuite les tests suivants pour un utilisateur pris au hasard : Connexion Oracle (avec l'utilisateur MBERNARD) : Création d’une table (avec l'utilisateur MBERNARD) : 10 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Étape 7 : Programme Python de génération du script SQL DROP Réaliser un second programme Python nommé « genererScriptDrop.py » générant un script de suppression des utilisateurs et tous leurs objets. Données du programme : le fichier texte que vous avez récupéré « toulouse.txt ». Résultat : le script SQL de suppression des utilisateurs nommé « supprimerUtilisateurs.sql ». Programme python, "genererScriptDrop.py", commenté : from os import chdir chdir("/home/btssio/Bureau/PARTAGE/onlemetla/") f=open('toulouse.txt','r') # Ouvre le fichier "toulouse.txt" en mode lecture. g=open('supprimerUtilisateurs.sql','w') # Créer ou ouvre le fichier "supprimerUtilisateurs.sql" en mode écriture. for t in f: print (t) tMots=t.split('"') pl=tMots[3][0] print (pl) nom=tMots[5] pl=pl.lower() nom=nom.lower() g.write("DROP USER ") # Ecrit "drop user" qui permet de supprimer un utilisateur. g.write(pl+nom) g.write(";") g.write("\n") f.close() # Ferme le fichier "toulouse.txt". g.close() # Ferme le fichier " supprimerUtilisateurs.sql". Script obtenu : 11 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Étape 8 : Test du script DROP Exécutez le script « supprimerUtilisateurs.sql » généré sur votre serveur Oracle local. Vérifiez que tous les utilisateurs ont disparu. Après avoir importé le fichier "supprimerUtilisateurs.sql" sur SQL Developer, on peut lancer la suppression des utilisateurs : Étape 9 : Rédaction d’un mode opératoire Réaliserez à l'intention de l'administrateur système, un mode opératoire en français puis sa traduction en anglais. Ce mode opératoire précisera : Récupération des utilisateurs dans l’Active Directory La récupération des utilisateurs dans l’Active Directory se fait par l'intermédiaire du logiciel LDAP Administrator 2015 sous n'importe quel système Windows connecté à un contrôleur de domaine Active Directory. Installation de "LDAP Administrator" sur sa machine Windows : 12 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Création d’un nouveau profile (nous reprendrons l’exemple de l'entreprise STESIO) : 13 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Renseigner les informations relatives au serveur AD afin d’accéder aux données : Choisir le nom et le mot de passe souhaiter : Terminer la création du profile avec les paramètres choisis : 14 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Puis développez les nœuds jusqu’à accéder à vos données, cliquer sur « export data » avec un format « Plain text », ensuite, dans Attribute Set préciser les attributs qui vous intéressent puis le « semicolon » « ; » comme séparateur de champ. 15 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 On obtient un fichier comme celui-ci : "DN";"cn";"givenName" "OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net"; "CN=BERNARD\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"BERNARD";"Mickael" "CN=MICHEL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MICHEL";"Arthur" "CN=DUPONT\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"DUPONT";"Sebastien" "CN=MARCHAL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MARCHAL";"Iniesta" "CN=GILLET\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GILLET";"Emilie" "CN=GAY\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GAY";"Charlotte" "CN=CORDIER\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"CORDIER";"Noemie" Supprimer les deux premières lignes de façon à n’avoir que des « CN » afin de faciliter le traitement, vous obtenez donc ceci : "CN=BERNARD\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"BERNARD";"Mickael" "CN=MICHEL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MICHEL";"Arthur" "CN=DUPONT\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"DUPONT";"Sebastien" "CN=MARCHAL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MARCHAL";"Iniesta" "CN=GILLET\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GILLET";"Emilie" "CN=GAY\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GAY";"Charlotte" "CN=CORDIER\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"CORDIER";"Noemie" Utilisation des programmes Python Ouvrer le programme python « projetpython1sio.py » : 16 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Modifier les lignes 2 et 3 : - ligne 2 : chemin d’accès du fichier ligne 3 : nom du fichier (que vous avez créé auparavant) Lancer le programme, vous pourrez récupérer le fichier « .sql » dans le chemin d’accès que vous avez spécifié. Une fois le script généré il faut l’exécuter sur le serveur Oracle local. Ouvrer SQL Developer, importer le fichier de sortie (.sql) et l’exécuter en se connectant en tant que System. Après exécution du script, celui-ci créer tous les utilisateurs avec la première lettre du prénom suivi du nom. Les utilisateurs créer on alors la possibilité de se connecter et de créer une table. Ici le mot de passe est le même que le nom d’utilisateur par défaut. 17 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Utilisation des scripts SQL générés Ouvrer le programme « genererscriptdrop » : * La ligne 2 correspond au chemin d’accès du fichier. * La ligne 3 indique le nom du fichier (celui récupéré par "LDAP Administrator" lors de la première phase). Lancer le programme, vous pourrez récupérer le fichier « .sql » dans le chemin d’accès que vous avez spécifié. Ouvrer dans votre SQL Developer votre fichier ".sql" et lancer-le, puis constatez la suppression des comptes créés : Traduction du mode opératoire en anglais Using LDAP Administrator: Creating a new profile (we take the example of STESIO). Set the name of the profil : 18 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Fill the information on the server to access the data : Select the name and the password wished : 19 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Finish creating : Then expand the nodes to access your data, click on "Export data" with a "Plain text" format, then in Attribute Set specify the attributes that interest you then the "semicolon" "; " as a field separator. 20 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 You get a file like this : "DN";"cn";"givenName" "OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net"; "CN=BERNARD\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"BERNARD";"Mickael" "CN=MICHEL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MICHEL";"Arthur" "CN=DUPONT\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"DUPONT";"Sebastien" "CN=MARCHAL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MARCHAL";"Iniesta" 21 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 "CN=GILLET\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GILLET";"Emilie" "CN=GAY\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GAY";"Charlotte" "CN=CORDIER\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"CORDIER";"Noemie" Delete the first two lines to have only "CN" to facilitate the treatment, so you get this: "CN=BERNARD\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"BERNARD";"Mickael" "CN=MICHEL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MICHEL";"Arthur" "CN=DUPONT\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"DUPONT";"Sebastien" "CN=MARCHAL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MARCHAL";"Iniesta" "CN=GILLET\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GILLET";"Emilie" "CN=GAY\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GAY";"Charlotte" "CN=CORDIER\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"CORDIER";"Noemie" Creating and Using sql scripts Open the python program "projetpython1sio.py" : Change the line 2 and 3 : - line 2: file way line 3 : file name (that you created previously) Launch the program. You can recover the ".sql" file in the way you specified. Open your file your sql Developer ".sql" and run it and see the created accounts : 22 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Here the password is the same as the username by default. Creating a script who is able to erasing them (users) Open the "genererscriptdrop" program : * Line 2 is the file way. * Line 3 shows the filename (the one research by LDAP Administrator during the first phase). Launch the program. You can recover the ".sql" file in the path you specified. Open in your SQL Developer your ".sql" file, run it and see the removal of created accounts : 23 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Étape 10 : Première évolution de l’application Mettre au point une nouvelle version du programme Python, nommée « genererScriptCreateV2.py » permettant de respecter les règles imposées par l'administrateur du système : • prénoms composés : on juxtapose les initiales de chaque prénom • le nom d'utilisateur ne contient que des caractères alphabétiques en majuscules ('A' à 'Z') ; tous les autres caractères seront éliminés. Exemple : JeanBaptiste LE FLOC’H doit donner JBLEFLOCH Nouveau programme python commenté : from os import chdir # Importer la commande chdir du module os. chdir("/home/btssio/Bureau/PARTAGE/onlemetla/") # Spécifie le répertoire courant. f=open('toulouseV2.txt','r') # Ouvre le fichier "toulouse.txt" en mode lecture. g=open("creerUtilisateursv2.sql","w") # Créer ou ouvre le fichier "creerUtilisateurs.sql" en mode écriture. for t in f: # Boucle permettant de lire chaque lignes (t) du fichier. print (t) # Affiche le contenue de la ligne. tMots=t.split('"') # Fractionne la chaine de caractère en mots. pl=tMots[5][0] # Prend la première lettre du premier mot. print (pl) # Affiche la première lettre. nom=tMots[3] # Prend le second mot en entier. pl=pl.upper() # Convertie en minuscule. nom=nom.upper() # Convertie en minuscule. nom = nom.replace("-","")#supprime les tirets print nom nom = nom.replace(" ","")#supprime les espaces print nom nom = nom.replace("'","")#supprime les apostrophes print nom g.write("CREATE USER") # Ecrit "CREATE USER" qui permet de créer un utilisateur de la SGBD. g.write(pl+nom) # Ecrit dans le fichier de sortie. g.write("\n") # Saute une ligne. g.write("IDENTIFIED BY\n") # Ecrit " IDENTIFIED BY" qui permet à l'utilisateur de se connecter avec un mot de passe. g.write("GRANT CONNECT TO\n") # Ecrit " GRANT CONNECT TO" qui autorise l'utilisateur à se connecter à la base de donnée. Ce droit est vérifié à la connexion. 24 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 g.write("GRANT CREATE TABLE TO\n") # Ecrit " GRANT CREATE TABLE TO" qui donne le droit à l'utilisateur de créer une table. g.write("GRANT UNLIMITED TABLESPACE TO\n") g.write(pl+nom) # Ecrit dans le fichier de sortie. g.write("\n") # Saute une ligne. g.write(";") g.write("\n") g.write("\n") f.close() # Ferme le fichier "toulouseV2.txt". g.close() # Ferme le fichier " supprimerUtilisateursv2.sql". Jeu d'essai : NOM BERNARD PRENOM Mickael MICHEL Arthur DU-PONT Sebastien MARCH A Lombre Iniesta GILLET PARBAL Emilie AFFICHAGE 25 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 G-A-Y Charlotte CORD-lIER Noemie BUISSON Mahel DOS SANTOS Ines LE VY Emilie RU-I'Z Charlotte SAM'SON Noelle BONHOMME Michel 26 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 LE-BLEU Arthur BRIERE Emilie AUVRAY Charlotte PAGE Noah PORTIER Michel VERGNE Arthur Le Floc'h Victor Étape 11 : Deuxième évolution de l’application Mettre au point une nouvelle version du programme Python, nommée « genererScriptCreateV3.py » permettant de fournir en paramètre sur la ligne de commande, le nom du fichier des utilisateurs (ex : « toulouse.txt ») ainsi que le nom du fichier résultat. 27 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Exemple d'utilisation : python3 genererScriptCreateV3.py toulouse.txt creerUtilisateurs.sql Nouveau programme python commenté : from os import chdirimport syschdir # Importer la commande chdir du module os. chdir("/home/btssio/Bureau/PARTAGE/onlemetla/") # Spécifie le répertoire courant. f=open(sys.argv[1],'r') # Ouvre le fichier "toulouse.txt" en mode lecture. g=open(sys.argv[2],"w") # Créer ou ouvre le fichier "creerUtilisateurs.sql" en mode écriture. for t in f: # Boucle permettant de lire chaque lignes (t) du fichier. print (t) # Affiche le contenue de la ligne. tMots=t.split('"') # Fractionne la chaine de caractère en mots. pl=tMots[5][0] # Prend la première lettre du premier mot. print (pl) # Affiche la première lettre. nom=tMots[3] # Prend le second mot en entier. pl=pl.upper() # Convertie en minuscule. nom=nom.upper() # Convertie en minuscule. nom = nom.replace("-","")#supprime les tirets print nom nom = nom.replace(" ","")#supprime les espaces print nom nom = nom.replace("'","")#supprime les apostrophes print nom g.write("CREATE USER") # Ecrit "CREATE USER" qui permet de créer un utilisateur de la SGBD. g.write(pl+nom) # Ecrit dans le fichier de sortie. g.write("\n") # Saute une ligne. g.write("IDENTIFIED BY\n") # Ecrit " IDENTIFIED BY" qui permet à l'utilisateur de se connecter avec un mot de passe. g.write("GRANT CONNECT TO\n") # Ecrit " GRANT CONNECT TO" qui autorise l'utilisateur à se connecter à la base de donnée. Ce droit est vérifié à la connexion. g.write("GRANT CREATE TABLE TO\n") # Ecrit " GRANT CREATE TABLE TO" qui donne le droit à l'utilisateur de créer une table. g.write("GRANT UNLIMITED TABLESPACE TO\n") g.write(pl+nom) # Ecrit dans le fichier de sortie. g.write("\n") # Saute une ligne. g.write(";") g.write("\n") g.write("\n") f.close() # Ferme le fichier "toulouseV3.txt". g.close() # Ferme le fichier " supprimerUtilisateursv3.sql". une nouvelle version du mode opératoire Récupération des utilisateurs dans l’Active Directory La récupération des utilisateurs dans l’Active Directory se fait par l'intermédiaire du logiciel LDAP Administrator 2015 sous n'importe quel système Windows connecté à un contrôleur de domaine Active Directory. Installation de "LDAP Administrator" sur sa machine Windows : 28 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Création d’un nouveau profile (nous reprendrons l’exemple de l'entreprise STESIO) : 29 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Renseigner les informations relatives au serveur AD afin d’accéder aux données : Choisir le nom et le mot de passe souhaiter : Terminer la création du profile avec les paramètres choisis : 30 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Puis développez les nœuds jusqu’à accéder à vos données, cliquer sur « export data » avec un format « Plain text », ensuite, dans Attribute Set préciser les attributs qui vous intéressent puis le « semicolon » « ; » comme séparateur de champ. 31 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 On obtient un fichier comme celui-ci : "DN";"cn";"givenName" "OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net"; "CN=BERNARD\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"BERNARD";"Mickael" "CN=MICHEL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MICHEL";"Arthur" "CN=DUPONT\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"DUPONT";"Sebastien" "CN=MARCHAL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MARCHAL";"Iniesta" "CN=GILLET\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GILLET";"Emilie" "CN=GAY\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GAY";"Charlotte" "CN=CORDIER\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"CORDIER";"Noemie" Supprimer les deux premières lignes de façon à n’avoir que des « CN » afin de faciliter le traitement, vous obtenez donc ceci : "CN=BERNARD\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"BERNARD";"Mickael" "CN=MICHEL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MICHEL";"Arthur" "CN=DUPONT\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"DUPONT";"Sebastien" "CN=MARCHAL\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"MARCHAL";"Iniesta" "CN=GILLET\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GILLET";"Emilie" "CN=GAY\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"GAY";"Charlotte" "CN=CORDIER\,OU=Utilisateurs\,OU=Toulouse\,OU=Finances\,DC=stesio\,DC=net";"CORDIER";"Noemie" Utilisation des programmes Python Ouvrer le programme python « projetpython1siov3.py » en ligne de commande : 32 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Fichier en entrer Fichier en sortie Nom du programme Nom du logiciel Création d’un script capable de les effacer (utilisateurs) Ouvrer le programme « genererscriptdrop.py » : Modifier les lignes 2 et 3 : - ligne 2 : chemin d’accès du fichier. ligne 3 : nom du fichier récupéré par LDAP Administrator. Lancer le programme, vous pourrez récupérer le fichier « .sql » dans le chemin d’accès que vous avez spécifié. Une fois le script généré il faut l’exécuter sur le serveur Oracle local. Ouvrer SQL Developer, importer le fichier de sortie (.sql) et l’exécuter en se connectant en tant que System. Après exécution du script, celui-ci supprime tous les utilisateurs spécifié dans le fichier "toulouse.txt". 33 PEDRON_Pierre_1SIOB_Projet-Python 1SIO 2015/2016 Ouvrer dans votre sql Developer votre fichier « .sql » et lancer-le, puis constatez la suppression des comptes créés : Ici le mot de passe est le même que le nom d’utilisateur par défaut. 34 PEDRON_Pierre_1SIOB_Projet-Python