You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2007-03-30 16:45:57

emj
Member
From: GRENOBLE UNIVERSITE
Registered: 2007-02-21
Posts: 12

Synchronisation des lieux AD et GLPI

Salut à tous et d'abord bravo pour le travail accompli !

J'ai effectué avec succès un import de masse des utilisateurs AD de mon domaine vers GLPI (merci à Matoooy pour son script !)

Mais je voudrais pousser le bouchon un peu plus loin :

Vu qu'à l'import d'un utilisateur AD je récupère entre autres un lieu qui lui est affecté, je voudrais que lors de la consultation d'un ordinateur dans l'inventaire, le lieu de cet utilisateur s'affiche automatiquement dans le champs correspondant (Lieu:) sachant que dans mon cas c'est l'utilisateur qui fait le lien par défaut ... Le but de tout ceci est de limiter les saisies "manuelles" à des cas particuliers et d'avoir une synchro en temps réel en cas de changements de poste ou de lieu.

Ma question est de savoir si cela est possible et si oui pourriez-vous m'orienter un peu sachant que mes notions de PHP sont très limitées ?

Par avance, merci

Last edited by emj (2007-03-30 17:06:03)


Système : Debian 4.0 Etch
Logiciels : Apache 2.2, MySQL 5.0, PHP 5.2
Plateforme en exploitation : GLPI 0.70.2 + OCS-NG 1.01
Navigateurs : IE6, IE7, Firefox 2

Offline

#2 2007-04-06 17:19:37

emj
Member
From: GRENOBLE UNIVERSITE
Registered: 2007-02-21
Posts: 12

Re: Synchronisation des lieux AD et GLPI

J'ai déterminé 2 requêtes mysql

1-Synchronisation des utilisateurs et des contacts:
update glpi_computers,glpi_users set fk_users=glpi_users.id where glpi_users.name=glpi_computers.contact

2-Mise à jour des lieux en fonction des utilisateurs
update glpi_computers,glpi_dropdown_locations,glpi_users set glpi_computers.location=glpi_dropdown_locations.id where glpi_dropdown_locations.id=glpi_users.location and glpi_computers.fk_users=glpi_users.id


Ces requêtes fonctionnent bien avec phpMyAdmin mais l'appel par php ne semble pas fonctionner:
<?php
mysql_connect("localhost", "root", "****");
mysql_query("update glpi_computers,glpi_users set fk_users=glpi_users.id where glpi_users.name=glpi_computers.contact");
echo "Synchronisation de " .mysql_affected_rows(). " utilisateurs et contacts." .'<br />';
mysql_query("update glpi_computers,glpi_dropdown_locations,glpi_users set glpi_computers.location=glpi_dropdown_locations.id where glpi_dropdown_locations.id=glpi_users.location and glpi_computers.fk_users=glpi_users.id");
echo "Mise a jour de " .mysql_affected_rows(). " lieux." .'<br />';
mysql_close();
?>

... Pour le moment, je sèche ...


Système : Debian 4.0 Etch
Logiciels : Apache 2.2, MySQL 5.0, PHP 5.2
Plateforme en exploitation : GLPI 0.70.2 + OCS-NG 1.01
Navigateurs : IE6, IE7, Firefox 2

Offline

#3 2007-05-10 22:20:17

Stephan Durieux
Member
Registered: 2007-03-12
Posts: 7

Re: Synchronisation des lieux AD et GLPI

ben on dirait que 'php' ne sait pas sur quelle bdd il doit agir,
qqchose du style :
<?
   // ouverture de la connexion
   $connexion = mysql_connect("hote","utilisateur","password");
   // choix de la base glpi
   mysql_select_db('glpi',$connexion);
   // constitution de la requête
   $requete="DELETE FROM ....";
   mysql_query($requete,$connexion);
?>
devrait faire l'affaire.

cdlt.

Offline

#4 2007-05-15 14:19:05

emj
Member
From: GRENOBLE UNIVERSITE
Registered: 2007-02-21
Posts: 12

Re: Synchronisation des lieux AD et GLPI

On dirait bien que les modifs apportées fonctionnent correctement, merci à toi Stephan Durieux !
Je potasse un peu les finitions du script et vous tiens au courant


Système : Debian 4.0 Etch
Logiciels : Apache 2.2, MySQL 5.0, PHP 5.2
Plateforme en exploitation : GLPI 0.70.2 + OCS-NG 1.01
Navigateurs : IE6, IE7, Firefox 2

Offline

#5 2007-05-30 13:11:15

emj
Member
From: GRENOBLE UNIVERSITE
Registered: 2007-02-21
Posts: 12

Re: Synchronisation des lieux AD et GLPI

Voici donc le script définitf pour la procédure:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php
include ("_relpos.php");

include ($phproot . "/inc/includes.php");

//constitution des requêtes
$req0 = mysql_query("update glpi_computers set glpi_computers.location=0");
$req1 = mysql_query("update glpi_computers,glpi_users set glpi_computers.fk_users=glpi_users.id where (((glpi_users.name)=glpi_computers.contact) and ((glpi_computers.deleted)='N'))");
$req2 = mysql_query("update glpi_computers,glpi_dropdown_locations,glpi_users set glpi_computers.location=glpi_dropdown_locations.id where glpi_dropdown_locations.id=glpi_users.location and glpi_computers.fk_users=glpi_users.id");
$req3 = mysql_query("SELECT glpi_computers.name, glpi_dropdown_locations.name, glpi_users.name FROM glpi_computers, glpi_dropdown_locations, glpi_users WHERE (((glpi_dropdown_locations.ID)=glpi_users.location) AND ((glpi_computers.FK_users)=glpi_users.id) AND ((glpi_computers.deleted)='N')) ORDER BY glpi_dropdown_locations.name");



//exécution des requêtes
//Remise à zéro  des lieux
if (!$req0) {
   echo 'Impossible d\'exécuter la requête : ' . mysql_error();
   exit;
}
echo "Suppression de " .mysql_affected_rows(). " lieux." .'<br />';
echo "-------------------------------------------------" .'<br />';
//Synchronisation du contact AD et de l'utilisateur GLPI
if (!$req1) {
   echo 'Impossible d\'exécuter la requête : ' . mysql_error();
   exit;
}
echo "Synchronisation de " .mysql_affected_rows(). " contacts." .'<br />';
echo "-------------------------------------------------" .'<br />';
//Réaffectation des lieux en fonction du poste et de son utilisateur
if (!$req2) {
   echo 'Impossible d\'exécuter la requête : ' . mysql_error();
   exit;
}
echo "Mise a jour de " .mysql_affected_rows(). " lieux." .'<br />';
echo "" .'<br />';

//Affichage du résultat

while($row = mysql_fetch_array($req3)) {
    printf("Ajout du lieu %s poste %s de %s", $row[1], $row[0], $row[2] .'<br />');
}
?>

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Système : Debian 4.0 Etch
Logiciels : Apache 2.2, MySQL 5.0, PHP 5.2
Plateforme en exploitation : GLPI 0.70.2 + OCS-NG 1.01
Navigateurs : IE6, IE7, Firefox 2

Offline

Board footer

Powered by FluxBB