Étape 5 : Programme Python de génération du

publicité
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
Téléchargement