mise en place d'une application de gestion des tâches récurrentes

50
Rapport de stage (du 24/03 au 4/07) Extension de la Console de gestion Microsoft. Mise en place d’une application de gestion des tâches récurrentes. 2014 Conseil Général du Doubs Responsable : Alexandre Caro Professeur tuteur : Bénédicte Herrmann Charlélie PETRACCA Licence Pro SIL CDOOAM [email protected]

Upload: lykhuong

Post on 05-Jan-2017

229 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Mise en place d'une application de gestion des tâches récurrentes

Rapport de stage (du 24/03 au 4/07)

Extension de la Console de gestion Microsoft.

Mise en place d’une application de gestion des tâches récurrentes.

2014

Conseil Général du Doubs

Responsable : Alexandre Caro

Professeur tuteur : Bénédicte Herrmann

Charlélie PETRACCA

Licence Pro SIL CDOOAM

[email protected]

Page 2: Mise en place d'une application de gestion des tâches récurrentes

2

Remerciements

Je souhaite tout d’abord remercier Gérôme Aubert pour m’avoir accepté au sein de

son équipe et pour avoir su me proposer des travaux et projets enrichissants tout au long de

mon stage.

Je voudrais remercier Alexandre Caro, pour avoir été mon responsable lors de ce

stage et pour m’avoir suivi et conseillé dans mon travail.

Je remercie également toutes les personnes qui ont pris du temps pour m’aider dans

la réalisation de mes projets et pour m’expliquer le fonctionnement du système

d’informations du Conseil général.

- Sébastien Boetsch qui m’a beaucoup aidé dans la compréhension du

système,

- Fréderic Gaillard pour m’avoir présenté le matériel système et réseau.

- Nicolas Druoton pour son aide en web et en algorithmique,

Pour finir, je souhaite remercier l’ensemble de l’équipe de l’exploitation informatique

qui a été disponible qui m’a accueilli dans de très bonnes conditions.

Page 3: Mise en place d'une application de gestion des tâches récurrentes

3

Table des matières

Remerciements……………………………………………………………………………………………………………………..2

Table des matières………………………………………………………………………………………………………………..3

Introduction………………………………………………………………………………………………………………………….5

I. Présentation du contexte……………………………………………………………………………………………………6

A. Le Conseil Général du Doubs……….…………………………………………………………………………7

B. Le service des systèmes informatiques…………………………………………………………………..8

1. Organigramme……………………………………………………………………………………………8

2. Fonctionnement…………………………………………………………………………………………9

C. Organisation informatique…………………………………………………………………………………..10

1. Le parc informatique…………………………………………………………………………………10

2. Virtualisation…………………………………………………………………………………………….10

II. Projet d’extension de la MMC…………………………………………………………………………………………11

A. Présentation du sujet………………………………………………………………………………………..…12

1. Explication de l’intitulé du sujet………………………………………………………………..12

2. Objectifs du projet……………………………………………………………………………………13

B. Travail Réalisé………………………………………………………………………………………………………14

1. Prise en main des outils…………………………………………………………………………….14

2. Documentation sur l’extension de la MMC……………………………………………….17

3. Solution apportée – script C++………………………………………………………………….18

C. Bilan…………………………………………………………………………………………………………………….21

1. Compétences acquises……………………………………………………………………………..21

2. Évolutions possibles………………………………………………………………………………….21

Page 4: Mise en place d'une application de gestion des tâches récurrentes

4

III. Projet de gestion des tâches récurrentes………………………………………………………………………..22

A. Présentation du sujet…………………………………………………………………………………………..23

1. Contexte……………………………………………………………………………………………….....23

2. Objectif…………………………………………………………………………………………………….24

3. Cahier des charges……………………………………………………………………………………24

B. Travail Réalisé………………………………………………………………………………………………………25

1. Conception……………………………………………………………………………………………….25

2. Fonctionnalités…………………………………………………………………………………………27

3. Ergonomie………………………………………………………………………………………………..30

4. Difficultés rencontrées……………………………………………………………………………..30

C. Bilan…………………………………………………………………………………………………………………….32

1. Compétences acquises……………………………………………………………………………..32

2. Évolutions possibles………………………………………………………………………………….32

IV. Travaux sur le monitoring………………………………………………………………………………………………33

A. Le monitoring………………………………………………………………………………………………………34

B. Objectifs du projet……………………………………………………………………………………………….34

C. Travaux réalisés……………………………………………………………………………………………………34

D. Évolutions possibles…………………………………………………………………………………………….35

Conclusion…………………………………………………………………………………………………………………………..36

Annexes………………………………………………………………………………………………………………………………37

1. Microsoft Active Directory……………………………………………………………………………………38

2. Le protocole LDAP………………………………………………………………………………………………..39

3. Script C++ du projet d’extension de la MMC………………………………………………………..43

Lexique………………………………………………………………………………………………………………………………..47

Bibliographie……………………………………………………………………………………………………………………….49

Page 5: Mise en place d'une application de gestion des tâches récurrentes

5

Introduction

Actuellement en Licence professionnelle « Systèmes informatiques et logiciels »

option « Conception et développement orientés objets d’applications multi-tiers » à

l’Université de Besançon, j’ai dû effectuer un stage de 15 semaines au sein de l’équipe

informatique d’une entreprise ou d’une organisation. Un projet doit être réalisé durant cette

période et un rapport doit être présenté, appuyé par une soutenance de stage. Ce module

est le plus important de la Licence, tant au niveau du coefficient qu’au niveau pédagogique.

Ce stage doit en effet permettre de faire le lien entre la formation suivie tout au long de

l’année et le milieu professionnel.

C’est au sein du Conseil Général du Doubs que j’ai effectué mon stage. Le Conseil

Général est l’assemblée délibérante du département, élue au suffrage universel. Ses

missions sont nombreuses, il contribue par exemple au développement économique par

l’attribution d’aides à la création d’entreprises. Il effectue une action d’aide à l’enfance, aux

handicapés et aux personnes âgées avec la mise en place de centres médicaux sociaux,

d’aide à l’enfance ou autres. Le Conseil Général intervient dans des domaines comme

l’éducation de la jeunesse et des sports, la protection de l’environnement ou encore le

développement des voies de communications et des transports.

J’ai été admis dans le service des systèmes d’informations, au sein du pôle

exploitation informatique composée de l’équipe d’administrateurs système ainsi que de

l’équipe de télécommunication. Ma mission initiale était de travailler sur l’annuaire

informatique du Conseil Général, mais ayant réalisé d’autres tâches aussi importantes, j’ai

décidé de vous les présenter dans ce rapport. Ainsi, nous aborderons trois parties

concernant trois projets différents que j’ai réalisés pendant mon stage. Dans un premier

temps, je vous présenterai le contexte de ce stage. Les parties 2 et 3 concerneront mes deux

projets principaux, l’extension du schéma Active Directory pour lier le service informatique

au service des ressources humaines, et le développement d’une application web pour

assister la vérification par les agents de toutes les tâches automatisées qui ont lieu la nuit.

Enfin, dans une dernière partie, je vous parlerai du projet de monitoring auquel j’ai

contribué.

Page 6: Mise en place d'une application de gestion des tâches récurrentes

6

I. Présentation du contexte

A. Le CG 25

B. Le service des systèmes informatiques

C. Organisation informatique

Page 7: Mise en place d'une application de gestion des tâches récurrentes

7

I. Présentation du contexte

En France, le conseil général est l'assemblée délibérante élue au suffrage universel

d'un département.

A. Le Conseil Général du Doubs

Il est composé de l’assemblée départementale, de la commission permanente

ainsi que de diverses commissions spécialisées.

- Le président

Claude JEANNEROT, réélu en mars 2011

� Pouvoir exécutif du Département

� Convoque et préside l’assemblée

� Propose les délibérations soumises à l’approbation des élus

� Met en œuvre et exécute les décisions de l’assemblée

- L’assemblée départementale

35 Conseillers généraux (1 par canton)

� Pouvoir délibératif

� Gère les affaires du Département (délibérations)

� Vote le budget du département

- La commission permanente

35 élus (le président, 10 vice-présidents, 3 conseillers généraux délégués et 21 conseillers

généraux)

� Compétences déléguées par le Conseil général

� Ne peux pas voter le budget

Page 8: Mise en place d'une application de gestion des tâches récurrentes

8

- Les commissions spécialisées

� Etudient les dossiers qui seront ensuite débattus lors des assemblées plénières.

� Rôle exclusivement consultatif

� Instaurées par le Conseil général selon ses besoins

B. Le service des systèmes informatiques

Le SSI du CG du Doubs est dirigé par M. Gunther BAEKELANDT.

1. Organigramme

Organigramme du service des systèmes informatique du Conseil Général du Doubs

Page 9: Mise en place d'une application de gestion des tâches récurrentes

9

2. Fonctionnement

o Pôle Assistance

Dirigé par Thierry Durand, ce pôle a pour missions l’assistance technique auprès des

utilisateurs de l’organisme ainsi que la maintenance et l’évolution du parc informatique. Il

est divisé en 2 secteurs : l’un est chargé de l’assistance départementale (SVP Département)

et l’autre s’occupe de l’assistance des communes du Doubs (SVP Commune).

o Pôle Solution et Métier

Ce pôle a pour missions l’intégration et le développement d’applications et de bases

de données répondants aux besoins des usagers. On y trouve le service Système

d’Information géographique qui a pour fonction de cartographier le département (numériser

la géographie du Doubs).

o Pôle Infrastructure

Supervisé par Gérôme Aubert, ce pôle a pour mission la mise en place et la

coordination d’une politique de sécurité. Il a également pour but d’assurer le bon

fonctionnement du système d’information (système de stockage, cœur de réseau, ferme de

serveurs VMware, serveur AIX, ToIP sous Lync). Ce pôle est en évolution constante pour

garder l’infrastructure réseau à jour.

Il est divisé en 3 groupes :

- Chef de projet technique, M. Marc Antoine CHATELAIN. Il a pour mission

de coordonner les projets en cours.

- Intégrateur, M. Jean-Claude Carré. Il a pour mission d’assurer la pleine

compatibilité des logiciels métiers implantés ou à implanter au sein du

système d’information.

- Exploitation informatique, composée de 5 techniciens en charge de la

bonne gestion de l’infrastructure serveur et réseau. Cette équipe est

constituée de 3 administrateurs et 2 techniciens Telecom.

Page 10: Mise en place d'une application de gestion des tâches récurrentes

10

C. Organisation informatique

1. Le parc informatique

L’ensemble du parc clients et serveurs s’appuie sur des technologies Microsoft

Windows, Windows XP et Windows Seven pour les postes clients et Windows serveur

entreprise 2003 R2 et 2008 R2 pour les serveurs. Seuls les 2 serveurs de gestion de base de

données (oracle) s’appuient sur une base AIX.

Le parc informatique et téléphonique géré par le Conseil général est composé

d’environ 2000 postes de travail, 350 systèmes d’impression, 110 commutateurs et 75

serveurs répartis sur 89 sites distants à travers le territoire départemental et 70 répartis au

sein des systèmes d’information.

Le secteur de la téléphonie représente une part importante du parc matériel

composant le système d’information. En effet, l’ensemble de la collectivité comprend

environ 1900 postes de téléphonie fixe et environ 530 mobiles.

2. Virtualisation

La virtualisation consiste à faire fonctionner plusieurs systèmes d’exploitation ou

applications sur un serveur comme de simples logiciels que l’on appelle environnements

virtuels. La virtualisation de systèmes d’exploitation permet de n’utiliser qu’un seul

ordinateur pour faire tourner plusieurs systèmes comme s’ils fonctionnaient sur des

ordinateurs distincts. Les avantages de cette technique sont nombreux :

- Utilisation optimale des ressources (la charge en ressources des

environnements virtuels est répartie sur les machines physiques)

- Installation et déploiement facile des machines virtuelles

- Economies sur le matériel (consommation, entretien, surveillance…)

- Allocation dynamique de la puissance de calcul en fonction des besoins de

chaque application

Actuellement, il y a au Conseil général du Doubs 13 serveurs physiques pour plus

d’une centaine d’environnements virtuels.

Page 11: Mise en place d'une application de gestion des tâches récurrentes

11

II. Projet d’extension de la MMC

A. Présentation du sujet

B. Travail Réalisé

C. Bilan

Page 12: Mise en place d'une application de gestion des tâches récurrentes

12

II. Projet d’extension de la MMC

La console de gestion Microsoft (MMC) permet notamment d’accéder à la gestion

des utilisateurs du domaine (en l’occurrence un annuaire Active Directory). Cette interface

est extensible et on peut théoriquement ajouter ou modifier des menus ou même des

feuilles de propriétés.

A. Présentation du sujet

Ce projet doit permettre d’enregistrer le numéro de matricule des employés

dans les attributs de leur compte utilisateur. Cela créera le lien entre chaque employé du CG

et son compte utilisateur dans le domaine.

1. Explication de l’intitulé du sujet

1.1. Extension du schéma Active Directory (AD)

Dans Active Directory, les domaines sont regroupés de manière arborescente pour

partager des ressources. L’ensemble des arbres forment ce qu’on appelle la forêt AD.

Le schéma Active directory définit chaque classe d’objet pouvant être créée dans une

forêt AD. Il contient également les définitions de chaque attribut existant dans un objet AD.

Le schéma d’origine contient de nombreuses classes et attributs mais il est possible

de l’étendre en ajoutant, par exemple, des attributs à un objet.

Cependant, étendre le schéma est une opération déconseillée puisqu’une erreur lors

de la modification peut entraîner la perte et l’altération de données.

Le schéma d’origine possède de nombreux attributs dont beaucoup ne sont pas

utilisés, il est donc souvent possible de les utiliser au lieu dans créer de nouveaux.

1.2. Extension de la Microsoft Management Console (MMC)

La MMC est une console de management qui permet de regrouper la gestion de

plusieurs modules appelés Snap-Ins (fichiers logiciels enfichables), notamment ADUC

(Utilisateurs et ordinateurs Active Directory). ADUC permet, entre-autres, la gestion de tous

les ordinateurs, utilisateurs ou encore groupes d’utilisateurs du domaine Active Directory.

Page 13: Mise en place d'une application de gestion des tâches récurrentes

13

2. Objectifs du projet

2.1. Liaison entre RH et Informatique

Dans une organisation comme le Conseil Général, il y a bien souvent plusieurs

annuaires qui sont utilisés. Le réseau informatique utilise l’annuaire Active Directory pour la

gestion des ordinateurs et des utilisateurs comme vu précédemment, mais d’autres services

peuvent très bien utiliser un autre annuaire pour leur propre fonctionnement. Au CG25,

c’est par exemple le cas pour le service des ressources humaines qui utilise un annuaire

propre à leur logiciel de gestion. Dans certaines organisations, on peut parfois décompter 4

ou 5 annuaires.

Un tel phénomène pose un problème de duplication des données puisqu’ils

contiennent souvent des informations très similaires, ainsi que la perte de données car les

données présentes dans un annuaire n’apparaissent pas forcément dans un autre.

Dans ce projet, l’extension du schéma est mise en place afin de permettre d’ajouter à

l’annuaire informatique (LDAP), des informations communes avec le service RH, comme le

numéro de matricule de l’employé (et utilisateur).

Une telle liaison ouvrirait des possibilités concernant l’automatisation d’un certain

nombre de tâches (comme l’envoi des fiches de paye par exemple).

2.2. Utilisation de nouveaux attributs

Lorsque l’on accède aux propriétés d’un objet AD, une page de propriétés s’affiche,

contenant une partie des attributs de l’objet, ceux qui sont les plus souvent utilisés.

Si l’on veut utiliser de nouveaux attributs pour un objet (qu’il s’agisse d’une

modification du schéma AD ou non), ils ne seront pas visible depuis la feuille de propriétés,

or il est impératif de pouvoir accéder à ces attributs, ainsi que de pouvoir les modifier.

Mon objectif dans ce projet est la mise en place de l’accès aux nouveaux attributs.

Page 14: Mise en place d'une application de gestion des tâches récurrentes

14

B. Travail Réalisé

Pour atteindre mon objectif dans ce projet, j’ai dû utiliser des outils que je ne

connaissais pas et j’ai dû commencer par une étape de documentation importante,

notamment à propos des technologies d’annuaires Microsoft.

1. Prise en main des outils

1.1. Annuaires

Dans le monde de l’informatique, un annuaire est un système de stockage de

données, permettant en particulier de conserver les données n’étant que peu mises à jour,

comme les coordonnées des personnes, clients ou encore fournisseurs d’une entreprise.

Les annuaires vérifient les caractéristiques suivantes :

- Ils sont conçus pour être plus souvent consultés que mis à jour,

- Les données sont stockées de manière hiérarchique et non pas de manière

tabulaire comme dans les bases de données relationnelles,

- Ils comportent des mécanismes de recherche facile et d’organisation des

résultats,

- Ils doivent pouvoir être répartis et doivent donc comporter des mécanismes

permettant de coopérer,

- Ils doivent être capables de gérer l’authentification des utilisateurs ainsi que les

droits d’accès aux données.

On peut utiliser un annuaire pour :

- Constituer un carnet d’adresse,

- Authentifier des utilisateurs (grâce à un mot de passe),

- Définir les droits de chaque utilisateur,

- Recenser des informations sur un parc matériel (ordinateurs, serveurs, Adresses

IP, adresses MAC, etc…),

- Décrire les applications disponibles.

Page 15: Mise en place d'une application de gestion des tâches récurrentes

15

1.2. Microsoft Active Directory

AD DS (Active Directory Domain Services) est un service d’annuaire de Microsoft basé

sur les standards TCP/IP : DNS, LDAP, Kerberos, etc… Il référencie les personnes (nom,

prénom, téléphone, etc…) ainsi que toute sorte d’objet, dont les groupes d’utilisateur, les

ordinateurs, les serveurs, les imprimantes, etc… Les contrôleurs de domaine AD DS

permettent également d’authentifier les comptes utilisateurs et les ordinateurs lorsqu’ils se

connectent au domaine.

Active Directory est un outil destiné aux utilisateurs mais il constitue également un

outil d’administration et de gestion du réseau. Il permet de gérer le réseau entier car on

dispose d’une vue sur l’ensemble des ressources et des droits associés.

Des informations plus détaillées sur AD sont fournies en annexe 1.

1.3. Protocole LDAP

Les annuaires peuvent être implémenté différemment d’un serveur à un autre, c’est

là qu’intervient LDAP (Lightweight Directory Access Protocol). LDAP est un protocole

d’annuaire standard et extensible. C’est une interface normalisée qui permet d’accéder de

façon standard aux différents services de l’annuaire. Plus simplement, son rôle est de

fournir un moyen unique d’effectuer des requêtes sur un annuaire compatible LDAP.

Des informations plus détaillées sur le protocole LDAP sont fournies en annexe 2.

Page 16: Mise en place d'une application de gestion des tâches récurrentes

16

1.4. C++ Builder 2007

Code Gear C++ Builder est un environnement de développement C++. Il permet

notamment la création d’interfaces graphiques à la souris.

Module de C++Builder 2007 pour la création d’une interface graphique.

Le code de cette interface est généré automatiquement et il est possible

d’implémenter des méthodes de gestion des événements comme le clic sur un bouton.

Page 17: Mise en place d'une application de gestion des tâches récurrentes

17

2. Documentation sur l’extension de la MMC

2.1. Microsoft Technet

Le Technet de Microsoft est une documentation complète des produits Microsoft en

ligne. Il contient notamment la documentation des classes C++, C# et Visual Basic

développées par Microsoft.

Des cours et tutoriels sont également disponibles, on y trouve même quelques

exemples de code.

2.2. Projet ADUaCET

ADUaCET (Active Directory Users and Computers Extension Tool) est un projet C#

disponible sur internet, il concerne l’extension des pages de propriétés d’un utilisateur AD

dans la MMC.

L’objectif de ce projet est d’ajouter une feuille de propriétés contenant un champ qui

permet la modification de l’attribut « employeeId » pour un utilisateur AD, ainsi qu’une

image.

Lorsque l’on clique sur le menu « propriétés » d’un utilisateur, la MMC charge une

liste de fichier contenant les feuilles de propriétés à afficher. Le principe du projet ADUaCET

est de créer un de ces fichiers et d’indiquer à la MMC de le charger lorsque l’on souhaite

afficher les propriétés d’un utilisateur.

2.3. Problèmes rencontrés

Le développement d’une page de propriétés et sont importation dans la MMC sont

des opérations lourdes et complexes. Pour le déploiement sur l’ensemble du domaine, il est

très préférable de choisir la solution la plus simple possible.

Page 18: Mise en place d'une application de gestion des tâches récurrentes

18

3. Solution apportée - Script depuis le menu contextuel

3.1. Modification de la configuration AD

Comme la modification du schéma ou des feuilles de propriétés, Active Directory

permet d’étendre les menus contextuels. Il s’agit en fait d’indiquer dans la configuration AD

que l’on souhaite ajouter un menu sur tel ou tel type d’objet (comme un utilisateur) et que

tel script doit être exécuté lors du clic sur ce menu.

L’avantage de cette solution est qu’il n’y a pas besoin de modifier les pages de

propriétés mais simplement de créer une fenêtre contenant les champs nécessaires, et de

les remplir en récupérant les données dans l’annuaire.

3.2. Création d’un script C++

Le script doit afficher une fenêtre qui contient des champs qui permettront de voir et

de modifier les nouveaux attributs. Lorsque l’on clique sur un utilisateur, le script sera

exécuté avec des paramètres dont le type d’objet (utilisateur, domaine, ordinateur…) ainsi

que le nom unique dans l’annuaire LDAP de l’objet sur lequel on a cliqué (exemple :

« LDAP://CN=test,CN=Users,DC=Doubs,DC=fr »). On va alors pouvoir récupérer les valeurs

des attributs dont on a besoin pour remplir les champs de la fenêtre. La mise à jour de ces

attributs sera également possible grâce à ce nom.

Pour lier les utilisateurs du système informatique aux employés de l’annuaire du

service RH, dont la plupart des informations sont les mêmes et donc dupliquées, on souhaite

ajouter deux attributs aux utilisateurs. Les attributs qui seront utilisés existe déjà mais ne

sont pas utilisés, il s’agit des attributs ‘employeeId’ et ‘employeeNumber’. On utilisera

‘employeeId’ pour stocker le numéro de matricule d’un employé, numéro que le service des

ressources humaines utilise dans son logiciel. L’attribut ‘employeeNumber’ sera quant à lui

utilisé pour stocker un code correspondant à une liste de droits.

Pour mémoriser la liste de droits que possède un utilisateur parmis les cinq possibles,

on va utiliser un entier qui représente un octet dont chaque bit est assigné à un droit.

Exemple d’un utilisateur qui ne possède aucun droit, son attribut ‘employeeNumber’ a pour

valeur 0.

Page 19: Mise en place d'une application de gestion des tâches récurrentes

19

Un utilisateur qui possède le 3e droit aura le 3

e bit de contrôle à 1 et son attribut

‘employeeNumber’ aura donc la valeur de l’octet en base 10, soit 4.

Un utilisateur possédant tous les droits verra chacun des cinq bits de contrôle à 1 et donc son

attribut prendra la valeur 31.

De cette manière, toutes les combinaisons possibles de droits se voient attribuer une

valeur comprise entre 0 et 31.

La fenêtre affichée par le script lors d’un clic sur le menu ‘propriétés’ doit donc faire

apparaître deux champs qui contiennent les valeurs des attributs ‘employeeId’ et

‘employeeNumber’ de l’utilisateur ainsi que des cases à cocher correspondant aux droits

possibles. Lorsque des cases sont cochées ou décochées, la valeur du code est mise à jour.

On pourra donc modifier directement l’attribut ‘employeeId’ et cocher/décocher les droits

de cet utilisateur. La valeur du champ ‘employeeNumber’ sera modifiée automatiquement.

Fenêtre permettant l’accès aux champs ‘employeeId’ et ‘employeeNumber’

Page 20: Mise en place d'une application de gestion des tâches récurrentes

20

Pour accéder aux informations de l’utilisateur sur lequel on a cliqué, le script utilise

des informations comme le nom des attributs. Afin de facilité d’éventuelles modifications

(comme par exemple le choix de l’attribut utilisé pour stocker le numéro de matricule), il est

intéressant d’utiliser un fichier externe. Le fait de stocker ces informations dans un fichier

permettra de les modifier sans avoir à modifier le code source et recompiler l’application.

La fenêtre de base utilisera les attributs ‘employeeId’ et ‘employeeNumber’ d’un

utilisateur AD. Si dans le futur, on décide d’utiliser un autre attribut pour une raison ou pour

une autre, il faudra simplement modifier le fichier d’initialisation.

La fenêtre affiche également une liste de droits que l’on peut ajouter à l’utilisateur,

de la même manière, ces droits seront initialisés dans le fichier pour faciliter leur

modification.

3.3. Problèmes rencontrés

Un des problèmes que j’ai rencontré durant le développement de ce programme est

la récupération des informations par LDAP. En effet, les types d’objets et les fonctions

nécessaires sont souvent mal documentés et possèdent des noms souvent compliqués. Par

exemple, l’objet représentant un utilisateur du domaine est de type « IID_IADsUser ».

Un des points qui a généré des erreurs lors du développement a été la conversion de

chaînes de caractères. En effet, chaque fonction à quasiment son propre format de chaîne,

ainsi, tout au long du script j’ai dû jongler entre wchar_t, BSTR, V_BSTR, et AnsiString.

Le dernier point qui m’a posé quelques problèmes était l’utilisation du type

« VARIANT ». A la base, C++ est un langage typé, ce qui signifie que toute variable à un type

bien précis qui est défini lors de la déclaration, cependant, pour les besoins de ses produits,

Microsoft a créé un type d’objet pouvant stocker des variables de différents types. Les

Variants sont un peu compliqués à utiliser, ils sont destinés à être utilisés pour stocker des

objets de types différents mais ils possèdent tout de même un attribut qui définit le type de

l’objet stocké. Leur utilisation a nécessité un certain temps de compréhension.

Page 21: Mise en place d'une application de gestion des tâches récurrentes

21

C. Bilan

Le travail que j’ai réalisé au sein de ce projet m’a permis d’acquérir un certain

nombre de compétences et ouvre les portes à la création de nouveaux programmes ou

scripts en rapport avec le service des ressources humaines.

1. Compétences acquises

Ce projet a nécessité qui j’acquière une bonne compréhension du fonctionnement

d’Active Directory et de LDAP. Grâce aux explications de mes collègues de bureau, aux

manuels officiels de Microsoft que m’ont été fournis, et à la documentation trouvée sur

internet, j’ai pu comprendre le fonctionnement de ce système d’informations.

De plus, ce travail m’a permis d’utiliser le langage C++ pour créer une interface

graphique, ce qui m’a fait découvrir le logiciel C++ Builder que je ne connaissais pas.

La partie du programme concernant la manipulation d’un octet pour stocker

plusieurs informations m’a fait travailler sur l’algorithmique et l’optimisation de code. J’ai

notamment appris à manipuler un octet pour y stocker plusieurs informations.

2. Evolutions possibles

Il est possible d’étendre le schéma Active Directory ou de le modifier de manière

illimitée. Le travail réalisé pour ajouter les informations du service des ressources humaines

au schéma AD peut très bien être mis en place pour un autre service. Le service de gestion

financière pourrait bénéficier d’un lien similaire.

Une fois des informations comme le numéro de matricule d’un salarié enregistré

dans l’annuaire AD, on peut très bien imaginer la création de scripts d’automatisation de

certaines tâches. Les objets LDAP étant récupérable au travers de fonctions PHP, des

applications web pourront dorénavant être développés pour les autres services (envoi des

payes, gestion des commandes de fournitures, etc…).

Page 22: Mise en place d'une application de gestion des tâches récurrentes

22

III. Projet de gestion des tâches récurrentes

A. Présentation du sujet

B. Travail Réalisé

C. Bilan

Page 23: Mise en place d'une application de gestion des tâches récurrentes

23

III. Projet de gestion des tâches récurrentes

Ce projet concerne le développement d’un outil destiné aux administrateurs

système. Cet outil devrait aider les agents à effectuer la vérification des tâches récurrentes

effectuées par les serveurs pendant la nuit.

A. Présentation du sujet

Tous les jours, les agents doivent résoudre les problèmes qui ont eu lieu pendant la

nuit lors de l’exécution automatique de certaines tâches par les serveurs. Afin de pouvoir

résoudre les problèmes, il est essentiel de pouvoir les détecter de manière efficace. C’est là

qu’intervient ce projet.

1. Contexte

Des tâches récurrentes ont lieux tous les mois, toutes les semaines et mêmes tous les

jours pour certaines d’entre-elles. Les serveurs procèdent en effet à une sauvegarde des

données et des bases de données ainsi qu’a une multitude d’autres opérations pendant la

nuit.

Le premier travail des agents lorsqu’ils arrivent le matin est de vérifier que ces tâches

se sont bien déroulées et dans le cas contraire, les problèmes doivent être résolus le plus

rapidement possible.

Un grand nombre de vérifications peuvent être réalisées, certaines sont très

importantes voire essentielles comme s’assurer qu’aucun disque dur n’arrive à saturation, et

d’autres sont secondaires comme par exemple le fait de vérifier qu’il n’existe pas de version

plus récentes de tel ou tel logiciel. Cependant, même des tâches de moindre importance

peuvent générer des problèmes. En effet, sur un parc informatique de la taille de celui du

Conseil Général du Doubs, même une simple mise à jour peut générer des erreurs impactant

plusieurs dizaines voire centaines d’utilisateurs. De plus, plus la version d’un logiciel à mettre

à jour est obsolète, plus le risque que la mise à niveau pose des problèmes est élevé.

Les problématiques actuelles sont, d’une part, qu’il est difficile pour les agents de

couvrir la totalité des vérifications qu’il faudrait faire, d’autant plus lorsque des erreurs

concernant des tâches importantes sont détectés, et d’autre part, qu’aucun suivi dans le

temps n’est possible en ce qui concerne les tâches qui génèrent des erreurs.

Page 24: Mise en place d'une application de gestion des tâches récurrentes

24

2. Objectifs du projet

L’objectif de ce projet est double. Il fournira d’abord la liste des tâches reflétant la

vérification complète que doivent faire les agents tous les matins, et il permettra ensuite

l’obtention d’informations quant aux problèmes détectés.

Cette liste servira de fil conducteur pour les agents et permettra d’avoir une vision

globale de tout ce qui doit être vérifié. Elle devrait permettre à tous les techniciens

d’effectuer la même vérification dans un ordre précis et ainsi d’éviter que certaines tâches

secondaires soient oubliées.

3. Cahier des charges

La liste des tâches de vérifications sera présentée à travers une interface web. On

utilisera une base de données MySql pour stocker les tâches à afficher ainsi que les erreurs

détectées.

La liste contiendra toutes les tâches de fond effectuées par les serveurs qui

nécessitent une vérification.

Elle devra être ergonomique pour permettre aux agents de gagner du temps

lorsqu’ils font leur vérification.

Pour chaque tâche, il doit être possible de signaler un incident, de le décrire, et

d’indiquer l’impact éventuel sur le système ou sur les utilisateurs.

Des e-mails doivent être envoyés aux responsables de l’exploitation informatique

pour les prévenir d’un problème impactant beaucoup d’utilisateurs. Un e-mail de rapport

doit également leur être expédié à la fin de la vérification d’un agent.

La connexion à l’application ne doit être possible que pour les administrateurs

systèmes et les responsables de l’exploitation.

Une rubrique réservée aux responsables doit permettre l’ajout de tâches ou de

catégories, ainsi qu’une liste de toutes les tâches qui ont généré des erreurs afin de faire

apparaître les problèmes récurrents.

L’application devra indiquer quel technicien a effectué la dernière vérification ou

signalé telle ou telle erreur.

Page 25: Mise en place d'une application de gestion des tâches récurrentes

25

B. Travail Réalisé

L’application réalisée est de type Web et elle est hébergée sur le domaine doubs.fr.

Une base de données MySql a été mise à disposition pour le stockage des informations.

1. Conception

Afin de remplir ses objectifs, l’application doit être rapide et ergonomique. Une

application PHP et MySql permettra le développement d’une interface simple de gestion

ainsi que le stockage d’informations (comme par exemple la liste des tâches ayant généré

des erreurs).

1.1. L’interface utilisateur

Pour que les agents gagnent du temps lors de la vérification quotidienne, il est

impératif de leur éviter toute navigation inutile. Ainsi, la totalité des tâches sera vérifiée

depuis la même page.

La liste des tâches du jour affiché par l’application lorsqu’un agent se connecte et

générée depuis la liste des tâches ‘modèles’ préalablement enregistrées. Une rubrique,

permettra en effet aux responsables du pôle infrastructure de saisir les tâches récurrentes

qui devront être vérifiées et à quelle fréquence.

1.2. La Base de données

Modèle conceptuel de données

Page 26: Mise en place d'une application de gestion des tâches récurrentes

26

La base de données MySql sera composée de quatre tables :

o Catégorie

Les catégories permettront de classer les tâches pour les proposer aux agents dans

un ordre précis.

o Technicien

Chaque agent qui utilise l’application sera enregistré dans la base de données pour

permettre, par exemple, de connaître la personne qui a effectué la dernière vérification ou

qui a signalé telle ou telle erreur.

o Tache

Cette table va contenir toutes les tâches. Il y aura quatre types de tâches stockés ici.

La table contiendra tout d’abord les tâches ‘modèles’, il s’agit de la liste complète des tâches

récurrentes à vérifier. La liste pourra être agrandie par les responsables au fur et à mesure

des besoins. Lorsqu’un agent se connectera à l’application, on va alors créer la liste des

tâches du jour à partir des modèles. C’est ce deuxième type de tâches qui va être visible par

les techniciens lors de leur vérification. Si l’agent ne détecte aucune erreur sur une de ces

tâches, elle sera supprimée de la base de données. En revanche, si une erreur est signalée, la

tâche est conservée et restera affichée jusqu’à sa validation (et donc résolution du

problème). Les tâches ayant généré des erreurs seront conservées dans la base et seront

listées dans une rubrique réservée aux responsables. Cela permettra à ces derniers d’obtenir

un certain nombre d’informations comme notamment le temps pendant lequel une tâche

est restée en erreur.

Pour résumé, la table Tâche contiendra :

� Les tâches « modèles » (attribut ‘estModele’=1):

• Ne sont pas visibles par les agents

• Sont quotidienne, hebdomadaires ou mensuelles.

� Les tâches du jour (‘estModele’=0 et ‘dateTache’=<date du jour>) :

• Sont des copies des tâches modèles auxquelles on ajoute la

date du jour

• Sont créées à la connexion d’un agent selon la fréquence

du modèle et la date de la dernière connexion

• Sont éditées par les agents (validation ou description de

l’erreur)

• Sont supprimées de la base si validée sans erreur

� Les tâches en erreur (‘erreurSignalee’=1) :

• Sont obligatoirement décrites et leur impact indiqué

Page 27: Mise en place d'une application de gestion des tâches récurrentes

27

• Reste affichées tant que non-validées

� Les tâches validées après erreur (‘erreurSignalee’=0,

‘dateValidation’=<…>)

• Sont listées pour les responsables

• Voient leur attribut ‘dateTache’ comparé à ‘dateValidation’

pour connaître la durée de l’erreur

o Connexion

Les connexions à l’application seront également stockées dans la base de données.

Lorsqu’un utilisateur va se connecter à l’application, cette table permettra notamment de

savoir quelles sont les tâches du jour. Les tâches quotidiennes ne seront proposées que lors

de la première connexion de la journée, les tâches hebdomadaires lors de la première

connexion de la semaine, etc… De cette manière, si deux agents se connectent à

l’application, les tâches à vérifiés ne seront ajoutées qu’une fois.

2. Fonctionnalités

2.1. Connexion LDAP

L’application de gestion des tâches récurrentes ne doit être accessible que par

certaines personnes. De plus, on doit connaître l’agent qui a signalé une erreur sur une

tâche, ou encore le nom du dernier technicien ayant effectué la vérification. Une

authentification doit donc être mise en place et les utilisateurs doivent être enregistrés dans

la base.

Pour éviter aux techniciens d’avoir à saisir un identifiant et un mot de passe à chaque

connexion, l’application utilise l’authentification Windows. En effet, lorsqu’un utilisateur

souhaite accéder à une page de l’application, cette dernière va avant tout vérifier que

l’utilisateur est authentifié. Si ce n’est pas le cas, il est automatiquement redirigé vers une

page de connexion. Cette page va interroger l’annuaire Active Directory grâce à une requête

LDAP pour connaître le nom complet de l’utilisateur courant à partir de son identifiant

Windows. Elle va également récupérer le groupe de l’utilisateur pour vérifier qu’il fait bien

partie des administrateurs système.

Si l’utilisateur fait partie des administrateurs, il est connecté et redirigé vers la page

principale de l’application automatiquement, sinon un message d’erreur apparaît. Les

utilisateurs sont enregistrés dans la base de données lors de leur première connexion.

Avec ce mode de fonctionnement, la connexion à l’application est totalement

transparente pour l’utilisateur.

Page 28: Mise en place d'une application de gestion des tâches récurrentes

28

2.2. Liste des tâches

Lors de chaque connexion d’un agent, la date est enregistrée dans la base de

données. A chaque nouvelle connexion, l’application va comparer la date actuelle à la date la

plus récente dans sa base de données (date de la dernière connexion). Si le mois a changé

depuis la dernière connexion, les tâches modèles dont la fréquence est mensuelle sont

dupliquées, on passe leur attribut ‘estModèle’ à zéro, et on leur attribue la date du jour. Ce

sont ses tâches qui seront affichées pour la vérification de l’agent. De la même manière, si

une semaine est passé depuis la dernière connexion, on ajoute les tâches hebdomadaire et

idem pour les tâches quotidienne.

Lorsque l’agent accède à l’application, il arrive donc sur la liste des tâches à vérifier,

triées par catégorie. Pour chaque tâche, il effectue la vérification correspondante, s’il n’y a

pas d’erreur il valide la tâche qui disparaît de la liste et est supprimée de la base de données.

Si au contraire une erreur est détectée, il doit saisir une description de l’erreur dans un

champ prévu à cet effet. Il peut également préciser si l’erreur à un impact sur le système ou

sur les utilisateurs. S’il y a un impact sur les utilisateurs, il peut signaler le nombre

d’utilisateurs touchés et s’il signale que plus de 200 utilisateurs sont impactés, un email est

envoyé automatiquement aux responsables du pôle.

2.3. Envois d’emails

Comme c’est évoqué dans le paragraphe précédent, l’application envoi des emails

automatiquement. En effet, si un agent signale qu’une tâche ne s’est pas déroulée

correctement et qu’elle génère une erreur impactant plus de 200 utilisateurs, les

responsables du pôle infrastructure reçoivent automatiquement un email. Ce courrier leur

précise quelle tâche à générer l’erreur et quel technicien l’a signalé.

De plus, un bouton apparaît à la fin de la vérification pour permettre d’envoyer un

rapport aux responsables. Ce rapport les informe de qui a effectué la vérification et il leur

donne la liste de toutes les tâches en erreur ou qui n’ont pas été traitées par l’agent.

2.4. Gestion des tâches et catégories

Les listes de tâches ‘modèles’ et de catégories vont être enregistrées lors de la mise

en production de l’application. Cependant, les responsables du pôle ont la possibilité

d’ajouter, modifier ou supprimer des tâches et des catégories grâce à des formulaires

simples.

Page 29: Mise en place d'une application de gestion des tâches récurrentes

29

Formulaire d’ajout d’une tâche

Formulaire d’ajout d’une catégorie

2.5. Tâches ayant généré des erreurs

Cette rubrique, réservée aux responsables, liste la totalité des tâches ayant été

validées après avoir été en erreur. En effet, lorsqu’un agent signale une erreur sur une tâche,

cette dernière reste affichée jusqu’à ce que le problème soit résolu et la tâche validée. Cette

liste permet de connaître quelles tâches génèrent souvent des erreurs ou quelles tâches sont

restées en erreurs le plus longtemps.

Cette fonctionnalité apportera des informations sur plus long terme, qui n’étaient pas

disponible auparavant. Constater qu’une certaine tâche pose fréquemment problème

pourrait permettre de détecter des erreurs dont on n’avait pas connaissance. De la même

manière, d’éventuels liens entre plusieurs erreurs pourront être mis en évidence grâce à

cette liste et ainsi faciliter leur résolution.

Page 30: Mise en place d'une application de gestion des tâches récurrentes

30

3. Ergonomie

Afin de garantir une vérification la plus rapide possible, l’application ce doit d’être le

plus ergonomique possible.

La liste des tâches affichées doit apparaître dans un ordre précis car certaines

vérifications dépendent de la réussite d’une autre tâche. De plus, chaque tâche a une

catégorie qui lui est attribué pour permettre de regrouper les tâches similaires. Ainsi, les

tâches seront présentées au technicien par groupes. Lorsque l’agent a effectué toutes les

vérifications d’une catégorie, il passe à la suivante en cliquant sur un bouton.

Pour que la page ne soit pas rechargée lorsqu’un agent passe d’une catégorie à une

autre, l’application utilise Javascript. En effet, la totalité des catégories est affichée sur la

page mais elles sont toutes invisibles sauf la première. Lorsque l’utilisateur clique sur le

bouton ‘suivant’ ou ‘précédent’, l’application masque la catégorie affichée et rend visible la

suivante.

Lorsqu’un utilisateur valide une tâche ou signale une erreur, une page de traitement

est appelée et elle enregistre les modifications dans la base de données. Une fois les

requêtes à la base effectuées, on redirige l’utilisateur sur la liste des tâches. La dernière

catégorie visitée est donc enregistrée pour permettre à l’utilisateur de reprendre la

vérification là où il en était. De cette manière, le traitement est totalement transparent pour

l’utilisateur. Si la tâche a été validée, elle est supprimée, sinon si une erreur a été signalée, la

tâche n’est pas supprimée mais la ligne du tableau est colorée en rouge. Dans tous les cas,

l’utilisateur reste au même endroit sur l’application.

4. Difficultés rencontrées

Pour garantir une vérification rapide des agents, il est essentiel d’afficher toutes les

tâches en une fois pour éviter des chargements durant la saisie. Cependant, dans un souci

d’ergonomie et pour garantir l’ordre de vérification des tâches, il est pertinent de regrouper

les tâches par catégorie. C’est donc grâce à Javascript que l’on va masquer les catégories et

n’en afficher qu’une à la fois. Or, chaque action des agents (validation d’une tâche ou

signalement d’erreur) provoque une écriture dans la base de données. L’affichage des

données et l’exécution des traitements étant faits par des pages différentes, la difficulté

principale de ce projet a été de réussir à effectuer les requêtes à la base de données de

manière transparente pour l’utilisateur.

Lorsque la page listant les tâches du jour est chargée, c’est la première catégorie qui

est affichée, lorsque l’utilisateur effectue une action, c’est une page de traitement qui fait

les requêtes à la base de données, puis il y a une redirection automatique pour renvoyer

l’agent sur la liste des tâches. Pour que le traitement soit transparent pour l’utilisateur, il a

Page 31: Mise en place d'une application de gestion des tâches récurrentes

31

été nécessaire d’ajouter une action lors de l’exécution des traitements. La variable

$_SESSION en PHP permet de stocker une liste d’attribut accessible par toutes les pages. J’ai

donc utilisé cette variable pour stocker un attribut ‘idCat’ avant chaque traitement. De cette

manière, lorsque l’utilisateur va être redirigé sur la liste des tâches après un traitement,

l’application sait quelle catégorie était visitée et elle l’affiche au lieu de la première. Ainsi

l’application bénéficie à la fois d’une bonne ergonomie grâce à l’affichage par catégorie,

d’une certaine efficacité grâce à la séparation des pages d’affichage et des pages de

traitements, et elle permet un gain de temps important grâce à une navigation automatisée.

Une autre manière de faire gagner du temps aux agents a été de remplacer le

système d’authentification classique (login + mot de passe) par une connexion automatique

utilisant LDAP. En effet, les utilisateurs du réseau étant obligatoirement authentifiés sur le

domaine, il est possible de se connecter par PHP à l’annuaire grâce à LDAP et d’effectuer des

requêtes pour récupérer les informations que l’on cherche. Pour obtenir les informations de

l’utilisateur qui se connecte, il est nécessaire de connaître son nom dans Active Directory.

Pour obtenir ce nom sans que l’utilisateur soit obligé de le saisir manuellement, les

paramètres d’authentification au site web ont dû être modifiés. En effet, en configurant le

site pour une authentification par Windows, c’est le nom de la session Windows (en

l’occurrence leur nom dans l’annuaire AD) qui va être utilisé. On effectue alors une requête

pour connaître l’attribut ‘distinguishedName’ de l’utilisateur qui tente de se connecter. Cet

attribut est le nom unique et complet d’un utilisateur dans l’annuaire. Il est stocké sous la

forme d’une chaîne qui contient le chemin d’accès à l’objet depuis la racine du domaine (ex :

« LDAP://CN=Jean-Marc Dupont, CN=Users, DC=Doubs, DC=fr »). Sachant que cette

application est réservée aux administrateurs système du pôle Infrastructure, on va devoir

vérifier que la personne qui essaye d’accéder à l’application fasse bien partie des groupes

« Pôle Infrastructure » et « Administration Système ». L’idée est donc de tester si il existe

une sous-chaîne « OU=Administration Système, OU=Pôle Infrastructure » dans le

‘distinguishedName’ de l’utilisateur. En exemple, voici le ‘distinguishedName’ de mon

compte utilisateur :

CN=Petracca Charlélie, OU=Administration Système, OU=Pôle Infrastructures, OU=SSI - Service des

systèmes d'information, OU=DSIPL - Direction Systèmes d'Information Pilotage Logistique, OU=DGA-

PAR - Pôle Administration et Ressources, OU=Doubs, DC=doubs, DC=fr

On constate la présence de la sous-chaîne « OU=Administration Système, OU=Pôle

Infrastructures », ce qui m’autorise l’accès à l’application.

Enfin, le dernier point qui m’a posé quelques problèmes est le navigateur internet

installé sur les machines. En effet, le navigateur utilisé est Internet Explorer 6 et il est donc

incompatible avec un grand nombre de fonctionnalités HTML 5, CSS 3, et Javascript. Cela a

rendu la partie ergonomie plus difficile à développer.

Page 32: Mise en place d'une application de gestion des tâches récurrentes

32

C. Bilan

Le travail que j’ai réalisé au sein de ce projet m’a permis de conforter mes

compétences dans le domaine du web et d’en acquérir des nouvelles. De nombreuses

évolutions peuvent être envisagées, ce projet servant de base répertoriant la liste complète

des tâches à réaliser.

1. Compétences acquises

Pour réaliser ce projet, j’ai dû comprendre le fonctionnement de base du protocole

LDAP ainsi que des fonctions PHP permettant la connexion et l’exécution de requêtes.

J’ai aussi du réalisé une application ergonomique et j’ai donc appris à utiliser JQuery

(Bibliothèque de fonctions Javascript) et AJAX (Technologie de requêtes asynchrones au

serveur, permettant notamment au serveur d’effectuer des traitements sans recharger la

page web).

De plus, au sein du Conseil général, une application de ce type, à de fortes chances

d’être un jour améliorée ou modifiée. Pour cette raison il est essentiel de produire un code

propre et bien commenté en gardant toujours à l’esprit que quelqu’un devra très

probablement travailler dessus un jour ou l’autre.

2. Evolutions possibles

L’application a été conçue pour permettre d’ajouter ou supprimer des tâches et

catégories. Cela devrait permettre de l’utiliser un maximum de temps sans avoir à modifier

le code source. On peut cependant imaginer divers évolutions comme la génération de

graphs concernant les tâches qui ont généré des erreurs. Des tableaux de statistiques

pourraient être ajoutés à l’application pour permettre de mieux cibler les problèmes.

Le graphisme de cette application peut être amélioré. En effet, la consigne que j’ai

suivie était de me concentrer sur l’aspect fonctionnalités, l’application étant destinée à un

public technique. Une partie de mon travail à quand même concerné le graphisme mais

seulement ce qui était essentiel au bon fonctionnement de l’application. Une grosse

évolution graphique pourra par exemple être effectuée lorsque la version du navigateur

internet actuellement installée sera mise à jour.

Page 33: Mise en place d'une application de gestion des tâches récurrentes

33

IV. Travaux sur le monitoring

A. Le monitoring

B. Objectifs

C. Travaux réalisés

D. Évolutions possibles

Page 34: Mise en place d'une application de gestion des tâches récurrentes

34

IV. Travaux sur le monitoring

Un travail intéressant que j’ai dû réaliser lors de ce stage concernait la récupération

de données concernant les événements des calendriers Outlook des utilisateurs.

A. Le monitoring

On appelle le monitoring la collecte d’informations sur les plateformes de production

du système d’informations. Au sein du pôle infrastructure, on utilise le monitoring pour

s’assurer de la disponibilité réelle des serveurs distants, ou encore pour afficher si un disque

arrive à saturation, cela permet aux agents de détecter les problèmes dès qu’ils

interviennent.

B. Objectifs

Un projet est actuellement en cours de développement pour afficher sur les écrans

de contrôle d’autres informations comme l’état des bases de données, de l’anti-virus ou

encore du pare-feu. L’objectif qui m’a été donné est de récupérer les évènements d’un

calendrier Microsoft Outlook. En effet, les agents utilisent ce logiciel pour la gestion de leurs

emails et de leur emploi du temps.

L’objectif est donc de pouvoir afficher un block contenant les prochains rendez-vous

importants sur les écrans.

C. Travail réalisé

La difficulté de ce travail est que les données ne peuvent pas être récupérer

directement depuis le logiciel Outlook. En effet pour obtenir les données, il est impératif de

se connecter directement au serveur Exchange (le serveur de messagerie).

C’est grâce à un petit projet trouvé sur internet après de longues recherches que j’ai

réussi à récupérer les évènements. En effet ce projet nommé « php-ews » (exchange web

services) contient un ensemble de classes PHP correspondant à tous les types d’objet utilisé

par le serveur de messagerie. Après avoir spécifié toutes les caractéristiques de l’objet que

l’on cherche, on peut effectuer une requête directement sur le serveur et ainsi récupérer par

exemple tous les évènements compris entre deux dates.

Pour chaque évènement extrait de cette manière, on va obtenir des attributs comme

la date de début, la date de fin, le sujet ou encore le lieu du rendez-vous. Ainsi on peut créer

le block qui sera affiché sur l’écran de contrôle.

Page 35: Mise en place d'une application de gestion des tâches récurrentes

35

Pour les événements ayant lieu dans la journée, on va calculer le temps restant avant

le rendez-vous, et grâce à Javascript, on va afficher un compteur pour une meilleure

visibilité.

Block qui sera affiché sur les écrans de contrôle. Il liste les événements à venir pour les

deux prochaines semaines.

D. Evolutions possibles

Ce projet pourrait être utilisé autrement que pour du monitoring. On peut

effectivement envisager la création de tableaux de bord pour les agents. En saisissant leurs

actions dans leur calendrier Outlook, les agents pourraient facilement obtenir des

statistiques sur leur travail. Le fait de connaître le temps que passent les techniciens sur

telles ou telles tâches dans leur travail quotidien permettrait de détecter celles qui sont les

plus chronophages et donc de définir des priorités précises quant aux points à améliorer.

Page 36: Mise en place d'une application de gestion des tâches récurrentes

36

Conclusion Générale

Ce stage a été une expérience très enrichissante pour plusieurs raisons. Le fait

d’effectuer mon stage au sein d’une équipe d’administrateur système m’a permis de

découvrir une facette de l’informatique que je ne connaissais pas ou très peu. Même lors de

mes travaux de développement, mes collègues ont pu me donner divers explications et

conseils qui m’ont beaucoup apportés. En effet, travailler dans un milieu « système » m’a

apporté beaucoup de connaissances sur des points que je ne maîtrisais pas comme

l’allocation de mémoire ou encore l’optimisation du code pour plus d’efficacité au niveau de

la compilation. Je considère ce stage comme une réussite puisque j’ai appris beaucoup

pendant cette période grâce notamment à une équipe toujours disponible pour m’aider

dans mon travail et pour prendre du temps pour m’expliquer certain aspect de leur métier.

Pour ma part, j’ai réussi à mettre à profit mes compétences pour développer des

applications qui seront réellement utilisées et qui permettront aux agents de gagner du

temps dans leur travail (application de gestion des tâches). De plus, mon travail ouvre les

portes à divers évolutions qui permettront d’augmenter l’efficacité du CG dans certaines

tâches (Liaison de l’informatique au service RH).

Ce stage va déboucher sur un contrat d’été pendant lequel je vais travailler sur la

refonte de certains scripts (notamment les scripts d’ouverture de session par les

utilisateurs). Cela me permettra d’ajouter encore quelques connaissances dans le domaine

du système.

Page 37: Mise en place d'une application de gestion des tâches récurrentes

37

Annexes

1. Microsoft Active Directory

2. Le protocole LDAP

3. Script C++ du projet d’extension de la MMC

Page 38: Mise en place d'une application de gestion des tâches récurrentes

38

Annexe 1 - Microsoft Active Directory

Active Directory sépare les structures logique et physique du domaine.

Structure logique :

Ensemble des éléments intangibles (objets, domaines, arbres et forêts).

Structure physique :

Ensemble des contrôleurs et sites de domaine.

Composants physiques Description

- Magasin de données Fichier sur chaque contrôleur de domaine

qui stocke les informations AD.

- Contrôleur de domaine Contient des copies de la BDD AD.

- Serveur de catalogue global Copie partielle des objets de la forêt qui

permet d’accélérer les recherches d’objets.

- Contrôleur de domaine en lecture seule (RODC)

Installation spéciale d’AD dans une forme de

lecture seule.

Composants logiques Description

- Partitions Appelées aussi contextes d’appellation, il

s’agit d’une section de la BDD.

- Schéma Définit la liste des types d’objets et

d’attributs.

- Domaines Limite d’administration logique pour les

utilisateurs et les ordinateurs.

- Arborescences de domaines Collection des domaines possédant un

domaine racine commun

- Forêts Collection de domaines partageant un

service AD commun.

- Sites Collection d’utilisateurs, groupes et

ordinateurs.

- Unités d’organisation (OU) Conteneurs dans AD

Page 39: Mise en place d'une application de gestion des tâches récurrentes

39

Annexe 2 - Protocole LDAP

1. Protocole

LDAP est un protocole d’annuaire standard et extensible. C’est une interface

normalisée qui permet d’accéder de façon standard aux différents services de l’annuaire.

Il fournit :

- Le protocole permettant d’accéder à l’information contenue dans l’annuaire,

- Un modèle d’information qui définit le type de données contenues dans

l’annuaire,

- Un modèle de nommage qui définit comment l’information est organisée et

référencée,

- Un modèle fonctionnel qui définit comment on accède à l’information,

- Un modèle de sécurité qui définit comment les données sont protégées,

- Un modèle de duplication qui définit comment la base est répartie entre

serveurs.

Le protocole définit comment s’établit la communication client-serveur. Il fournit à

l’utilisateur des commandes pour se connecter ou se déconnecter, pour rechercher,

comparer, créer, modifier ou effacer des entrées.

2. Modèle de données

Les données LDAP sont structurées dans une arborescence hiérarchique dont chaque

nœud correspond à une entrée de l’annuaire.

Les entrées correspondent à des objets réels ou abstraits, comme une personne, une

imprimante, ou des paramètres de configuration. Chacune de ces entrées contient un

certain nombre d’attributs.

L’ensemble des objets est défini par le schéma. Ce dernier décrit les classes d’objets,

leurs types d’attributs et leur syntaxe. Il définit les éléments suivants :

- Les objets qui sont utilisés pour stocker les données dans l’annuaire,

- Les règles qui définissent quels types d’objet on peut créer, et quels attributs

(obligatoire ou non) doivent être définis,

- La structure et le contenu de l’annuaire lui-même.

Page 40: Mise en place d'une application de gestion des tâches récurrentes

40

Les attributs de chaque entrée sont caractérisées par :

- Un nom,

- Un Object Identifier (OID) qui l’identifie,

- Contient-il plusieurs valeurs ?

- Une syntaxe et des règles de comparaison,

- Un indicateur d’usage,

- Un format ou une limite de taille.

Ils décrivent les caractéristiques de l’objet et sont accessible aux utilisateurs. Certains

attributs, dits opérationnels, ne servent qu’au serveur pour administrer les données.

Les classes d’objets modélisent des objets en les caractérisant par une liste

d’attributs obligatoires ou non. Elle est définit par :

- Un nom,

- Un OID,

- Des attributs obligatoires,

- Des attributs optionnels,

- Un type (structurel, auxiliaire ou abstrait).

Un type de classe est lié à la nature des attributs qu’elle utilise.

- Une classe structurelle correspond aux objets basiques de l’annuaire

(personnes, groupes...),

- Une classe auxiliaire désigne des objets qui ajoutent des informations

complémentaires aux objets structurels (Ex : objet mailRecipient, qui rajoute

les attributs concernant la messagerie électronique d’une personne),

- Une classe abstraite désigne des objets basiques de LDAP comme les objets

top ou alias.

Les classes d’objets forment une hiérarchie, au sommet de laquelle se trouve l’objet top.

Chaque objet hérite des propriétés (attributs) de l’objet dont il est le fils. La classe de l’objet

est précisée à l’aide de l’attribut objectClass. Une entrée peut appartenir à plusieurs classes

d’objet.

Page 41: Mise en place d'une application de gestion des tâches récurrentes

41

3. Modèle fonctionnel

Voici la liste des principales opérations que LDAP peut effectuer :

Opération Description

Abandon Abandonne l'opération précédemment envoyées au serveur

Add Ajoute une entrée au répertoire

Bind Initie une nouvelle session sur le serveur LDAP

Compare Compare les entrées d'un répertoire selon des critères

Delete Supprime une entrée d'un répertoire

Extended Effectue des opérations étendues

Rename Modifie le nom d'une entrée

Search Recherche des entrées d'un répertoire

Unbind Termine une session sur le serveur LDAP

Les opérations Search et Compare se font sous la forme d’une requête composée de

8 paramètres :

Paramètres Description

Base object Endroit de l’arbre où doit commencer la

recherche

Scope Profondeur de la recherche

DerefAliases Suit-on les liens ?

Size limit Nombre limite de réponses

Time limit Durée maximum de la recherche

AttrOnly Renvoie-t-on la valeur des attributs ?

Search filter Filtre de recherche

List of attributes Liste des attributs que l’on veut connaître

Page 42: Mise en place d'une application de gestion des tâches récurrentes

42

Les filtres sont exprimés sous forme d’expressions régulières désignant un ou

plusieurs objets de l’annuaire. Les opérateurs de recherche disponibles sont :

- Egalité : =

- Approximation : ~=

- Comparaison : <, <=, >, >=

- Présence : =*

- Sous-chaîne : *<expression>*

- ET, OU : (&(<expression>)(<expression>))

- Négation : !(<expression>)

Page 43: Mise en place d'une application de gestion des tâches récurrentes

43

Annexe 3 - Script C++ du projet d’extension de l’Active Directory

Cette annexe est constituée de parties du code concernant des points importants du

script.

- Déclaration des masques représentant les droits d’un utilisateur

byte B_TYPE = 1; byte B_INTERNE = 1 << 1;

byte B_RESPONSABLE = 1 << 2; byte B_ADJOINT = 1 << 3;

byte B_SECRETARIAT = 1 << 4;

Le symbole “ << x ” signifie que l’on déplace le bit de x sur la gauche. 1<<1 devient

donc 2 car l’octet passe de 00000001 à 00000010. De la même manière, 1<<2 devient 4 car

l’octet passe de 00000001 à 00000100. Ainsi, chacun de ces 5 droits sont assignés à un bit

différent.

- Cocher les checkbox selon la valeur de l’attribut ‘employeeNumber’

//pour savoir quels sont les droits que possède un utilisateur // on va tester la valeur de son attribut et vérifier si les bits // correspondant à chaque droit sont positionnés sur 1 if (employeeNumber & B_TYPE)

checkbox_type -> checked = true ;

if (employeeNumber & B_INTERNE) checkbox_int -> checked = true ;

if (employeeNumber & B_RESPONSABLE) checkbox_resp -> checked = true ;

Par exemple, si la valeur de l’attribut ‘employeeNumber’ d’un employé est 6. En

base 2, cette valeur sera donc 00000110. Pour chaque droit, on veut vérifier si le bit

correspondant est à positionné à 1 sur l’octet 00000110 et donc si l’utilisateur possède le

droit.

En utilisant l’opérateur ‘&’ (ET), entre ‘employeeNumber’ et ‘B_TYPE’, on test en fait

le résultat de 00000110 & 00000001. Le résultat est 00000000 ce qui veut dire que

l’utilisateur ne possède pas ce droit. Le test avec ‘if’ retournera ‘False’ et la case ne sera pas

cochée.

Page 44: Mise en place d'une application de gestion des tâches récurrentes

44

Pour le droit ‘B_INTERNE’, l’opération sera 00000110 & 00000010. Le résultat est

00000010, il est positif et donc ‘True’. L’utilisateur possède donc ce droit.

On va répéter ce test pour chacun des droit et on pourra ainsi déduire quels sont les

droits d’un utilisateur par rapport à la valeur de son attribut ‘employeeNumber’.

- Mise à jour de l’attribut employeeNumber selon les cases cochées

//calcule la valeur de l’attribut ‘employeeNumber’ selon les cases cochées void UpdateEmpNb(void) { int number = 0;

if(RadioButton2->Checked)

number |= B_TYPE; if(RadioButton4->Checked) number |= B_INTERNE;

if(CheckBox3->Checked) number |= B_RESPONSABLE;

if(CheckBox4->Checked) number |= B_ADJOINT; if(CheckBox5->Checked)

number |= B_SECRETARIAT;

Edit2->Text = IntToStr(number); }

Pour l’opération inverse, c’est-à-dire trouver la valeur de l’attribut selon les cases qui

sont cochées, la fonction ‘UpdateEmpNb’ sera appelé à chaque fois qu’une case est cochée

ou décochée.

Pour chaque droit, on va ajouter le bit de contrôle correspondant à la valeur de

l’attribut grâce à l’opérateur ‘|’ (ou exclusif).

De cette manière, à chaque fois qu’une case est cochée ou décochée, la valeur de

l’attribut est calculée et mis à jour dans la fenêtre.

Page 45: Mise en place d'une application de gestion des tâches récurrentes

45

- Récupération des attributs de l’objet User de l’Active Directory

// déclaration des variables et initialisation des Variants IADsUser *pUser=NULL; VARIANT var, var2 ;

VariantInit(&var); VariantInit(&var2); // récupération des paramètres passés à l'application (nom de l’utilisateur) user = ParamStr(1);

// conversion vers wchar_t size = user.WideCharBufSize() ;

util = new wchar_t[size] ; user.WideChar(util,size);

// connexion à l’objet User de l’AD hr = ADsGetObject ( util , IID_IADsUser , (void**)&pUser) ;

if (hr != S_OK) {

//traitement de l’erreur }

// recuperation des attributs nécessaires pUser -> Get( CComBSTR( attr1.c_str() ) , &var );

if (hr != S_OK) { //traitement de l’erreur } pUser -> Get( CComBSTR( attr2.c_str() ) , &var2 );

if (hr != S_OK) { //traitement de l’erreur }

// affichage des attributs champMatricule -> Text = V_BSTR(&var); champDroits -> Text = IntToStr( V_I4(&var2) ) ;

// libération des ressources VariantClear(&var) ; VariantClear(&var2) ;

delete (util);

Cette partie du code sert à afficher la valeur des attributs de l’utilisateur sur lequel on

a cliqué. La première étape consiste à se connecter à l’AD pour récupérer l’objet User grâce

à la fonction ‘ADsGetObject’ à laquelle on donne en paramètres le nom de l’objet que l’on

cherche, le type de l’objet et la variable dans laquelle on souhaite stocker l’objet.

Page 46: Mise en place d'une application de gestion des tâches récurrentes

46

On peut ensuite récupérer les attributs que l’on veut grâce à la fonction ‘Get’ (en

l’occurrence le numéro de matricule stocké dans l’attribut ‘employeeID’ et le code des droits

stocké dans ‘employeeNumber’). Les valeurs de ces attributs sont stockées dans des

variables de type VARIANT. Lorsque l’on veut utiliser ces Variants, il est nécessaire d’indiquer

le type de valeur qu’ils contiennent (du texte pour le numéro de matricule, une valeur

entière pour le code des droits).

Page 47: Mise en place d'une application de gestion des tâches récurrentes

47

Lexique

Adresse MAC : Identifiant physique d’une interface réseau.

Annuaire électronique : Type de base de données permettant de stocker, de

rechercher, de trier ou d’organiser des informations.

Attributs : Caractéristiques de l’objet dans l’annuaire.

Arbre AD : Ensemble de domaines parents qui permet le partage de

ressources. Un arbre peut n’être composé que d’un seul

domaine.

Catalogue global : Il contient un réplica partiel de chacun des domaines de

l’annuaire. Il permet à l’utilisateur du trouver des objets en

spécifiant un ou plusieurs de ses attributs.

Classe : Groupements logiques d’objets (Ex : Utilisateurs, Groupes,

Ordinateurs, etc…).

DNS : Domain Name System. Service permettant de traduire des

noms de domaines en adresses IP et inversement.

Domaine (ou partition) : Regroupe des objets apparentés ensemble afin de refléter le

réseau de l’organisation (Ex : societe.com, sous-

domaine.societe.com, etc…).

Forêt AD : Au niveau le plus élevé, des arbres disparates peuvent être

regroupés pour former une forêt. Tous les arbres d’une forêt

partagent le même schéma.

Identificateur global unique : Chaque objet du réseau doit être identifié par une propriété

unique. Active directory associe donc un identificateur global

unique (GUID) à chaque objet.

LDAP : Protocole TCP/IP permettant l’interrogation et la modification

des services d’annuaire.

Monitoring : Le monitoring est une activité de surveillance et de mesure

d’une activité informatique (mesure de performance, de

disponibilité, d’intégrité…).

Page 48: Mise en place d'une application de gestion des tâches récurrentes

48

Objet : Ressource réseau. Peut être organisé en classes. Des objets

peuvent en contenir d’autres, on les appelle Feuilles et

Conteneurs (un conteneur peut contenir des feuilles et d’autres

conteneurs).

Schéma : Définition formelle de tous les types d’objets d’un arbre. Il peut

être modifié pour définir les attributs qui doivent être stockés

dans le catalogue global.

Unité d’organisation (OU) : Type de conteneur utilisé fréquemment pour catégoriser les

objets d’un domaine.

Page 49: Mise en place d'une application de gestion des tâches récurrentes

49

Bibliographie

Pour réaliser mes projets j’ai utilisé plusieurs sources.

Documentation Microsoft en ligne :

http://technet.microsoft.com/

http://msdn.microsoft.com/

Documentation PHP en ligne :

http://www.php.net/

Documentation JQuery en ligne :

http://jquery.com/

Tutoriaux et cours en ligne :

http://www.developpez.com/

http://fr.openclassrooms.com/

Forums d’entraide :

http://stackoverflow.com/

Page 50: Mise en place d'une application de gestion des tâches récurrentes

50

Rapport de stage de Licence professionnelle par Charlélie Petracca.

La Licence professionnelle SIL Conception et développement orientés objets

d’applications multi-tiers se classe plutôt dans le domaine de la programmation. Cependant

c’est dans une équipe d’administrateurs réseau et système que j’ai effectué mon stage de fin

d’année. De ce fait, ce stage a été d’autant plus intéressant, j’ai en effet pu apprendre

beaucoup dans des domaines que je ne connaissais que très peu. J’ai également pu mettre à

profit mes compétences de développeur pour réaliser plusieurs projets qui seront utilisés

par cette équipe.

Mots clés :

Active Directory - Administration système - Annuaire informatique - Développement web -

Evènements Outlook - LDAP - Scripting

Internship Report of Professional license by Charlélie Petracca.

The professional license “Computer systems and software, object-oriented multi-tier

software development” could be categorized in the field programming. However, it’s in a

team of system and networks administrators that I’ve done my internship. That’s why this

work placement was quite interesting. Indeed, I learned many things in fields that I hardly

knew. I was also able to use my developer skills for various projects that will be used by the

team.

Key words :

Active Directory - System administration - IT Directory - Web development - Outlook events -

LDAP - Scripting