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 2005-09-21 12:32:41

kranck
Member
Registered: 2005-09-01
Posts: 85

Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

Dans glpi/glpi/pluggin/ocs, ajoutez a import.php et sync.php les lignes

include ($phproot . "/glpi/includes_software.php");
include ($phproot . "/glpi/includes_enterprises.php");

Dans glpi/glpi/pluggin/ocs/functions/functions.php

Ajouter le code suivant:

/**
* Import général config of a new enterprise
*
* This function create a new enterprise in GLPI with some general datas.
*
*@param $name : name of the enterprise.
*
*@return integer : inserted enterprise id.
*
**/
function ocsImportEnterprise($name) {
    global $langOcs;
    $db = new DB;
    $query = "SELECT ID FROM glpi_enterprises WHERE name = '".$name."'";
    $result = $db->query($query) or die("Verification existence entreprise :".$name." - ".$db->error());
    if ($db->numrows($result)>0){
        $data = $db->fetch_array($result);
        $isNewEntr = $data["ID"];
    } else {
        $isNewEntr = NULL;
    }
    if ($isNewEntr==NULL) {
        $entpr = new Enterprise;
        $entpr->fields["name"] = $name;
        $isNewEntr = $entpr->addToDB();
    }
    return($isNewEntr);
}

/**
* Import général config of a new software
*
* This function create a new software in GLPI with some general datas.
*
*@param $computer : id of a computer.
*@param $name : name of the software.
*@param $version : version of the software.
*@param $publisher : id for a enterprise.
*
*@return integer : inserted software id.
*
**/
function ocsImportSoftware($computer,$DEVICEID) {
    global $langOcs;
    $dbocs = new DBocs;
    $query2 = "select * from softwares WHERE DEVICEID='$DEVICEID'";
    $result2 = $dbocs->query($query2) or die($dbocs->error());
    while ($data2 = $dbocs->fetch_array($result2)){
        $name = $data2["NAME"];
        $version = $data2["VERSION"];
        $publisher = $data2["PUBLISHER"];
        $db = new DB;
        $query = "SELECT ID FROM glpi_software WHERE name = '".$name."' and version='".$version."'";
        $result = $db->query($query) or die("Verification existence logiciel :".$name." v:"." - ".$version.$db->error());
        if ($db->numrows($result)>0){
            $data = $db->fetch_array($result);
            $isNewSoft = $data["ID"];
        } else {
            $isNewSoft = NULL;
        }
        if ($isNewSoft==NULL) {
            $soft = new Software;
            $soft->fields["name"] = $name;
            $soft->fields["version"] = $version;
            $soft->fields["FK_glpi_enterprise"] = ocsImportEnterprise($publisher);
            $isNewSoft = $soft->addToDB();
        }
        installSoftware($computer,ocsImportLicense($isNewSoft));
    }
}


/**
* Import général config of a new license
*
* This function create a new license in GLPI with some general datas.
*
*@param $software : id of a software.
*
*@return integer : inserted license id.
*
**/
function ocsImportLicense($software) {
    global $langOcs;
    $db = new DB;
    $query = "SELECT ID FROM glpi_licenses WHERE sid = '".$software."'";
    $result = $db->query($query) or die("Verification existence License du soft-id :".$software." - ".$db->error());
    if ($db->numrows($result)>0){
        $data = $db->fetch_array($result);
        $isNewLicc = $data["ID"];
    } else {
        $isNewLicc = NULL;
    }
    if ($isNewLicc==NULL) {
        $licc = new License;
        $licc->fields["sid"] = $software;
        $licc->fields["serial"] = "global";
        $isNewLicc = $licc->addToDB();
    }
    return($isNewLicc);
}

/**
* Delete old licenses
*
* Delete all old licenses of a computer.
*
*@param $glpi_computer_id integer : glpi computer id.
*
*@return nothing.
*
**/
function ocsResetLicenses($glpi_computer_id) {
    $db = new DB;
    $query = "delete from glpi_inst_software where cid = '".$glpi_computer_id."'";
    $db->query($query) or die("Impossible d'effacer les anciennes licences.".$db->error());
}

et on modifie les functions suivantes :

/**
* Import général config of a new computer
*
* This function create a new computer in GLPI with some general datas.
*
*@param $name : name of the computer.
*@param $ssn : serial number of the computer.
*@param $model : id for a computer model.
*@param $manuf : id for a enterprise.
*
*@return integer : inserted computer id.
*
**/
function ocsImportNewComputer($name,$dpdOs,$ssn,$model,$manuf) {
    global $langOcs;
    //best way to do.
    $comp = new Computer;
    $comp->fields["name"] = $name;
    $comp->fields["os"] = $dpdOs;
    $comp->fields["serial"] = $ssn;
    $comp->fields["model"] = $model;
    $comp->fields["fk_glpi_enterprise"] = $manuf;
    $comp->fields["date_mod"] = date("Y-m-d H:i:s");
    $comp->fields["comments"] = addslashes($langOcs["import"][3]);
    return($comp->addToDB());
    /*//simpliest way to do.
    $db = new DB;
    $query = "insert into glpi_computers (name,os) VALUES ('".$name."','".$dpdOs."')";
    $db->query($query) or die("unable to import computer".$db->error());
    return $db->insert_id();*/
}
function ocsImportComputer($DEVICEID){
    $dbocs = new DBocs;
    $query = "select h.*,b.* from hardware as h inner join bios as b on h.DEVICEID=b.DEVICEID WHERE h.DEVICEID='$DEVICEID'";
    $result = $dbocs->query($query) or die($dbocs->error());
    if ($dbocs->numrows($result)==1){
        
        $line=$dbocs->fetch_array($result);
        
        // Insertion des infos générales d'un computer glpi_computers.name et glpi_computers.os
        $idlink = ocs_link($line['DEVICEID'], ocsImportNewComputer($line["NAME"],ocsImportDropdown('glpi_dropdown_os','name',$line["OSNAME"]." ".$line["OSVERSION"]),$line["SSN"],ocsImportDropdown('glpi_dropdown_model','name',$line["SMODEL"]),ocsImportEnterprise($line["SMANUFACTURER"])));
        $db = new DB;
        $query2 = "select glpi_id from glpi_ocs_link where ID = '".$idlink."'";
        $result2 = $db->query($query2);
        $computer_id = $db->result($result2,0,"glpi_id");
        
        ocsAddComputerDevices($computer_id,$DEVICEID);
        ocsImportSoftware($computer_id,$DEVICEID);
    }

}
function ocsUpdateComputer($ID){
    $dbglpi = new DB();
    $query="SELECT * from glpi_ocs_link WHERE ID='$ID'";
    $result=$dbglpi->query($query);
    if ($dbglpi->numrows($result)==1){
        $line=$dbglpi->fetch_assoc($result);

        ocsResetDevices($line['glpi_id'],PROCESSOR_DEVICE);
        ocsResetDevices($line['glpi_id'],NETWORK_DEVICE);
        ocsResetDevices($line['glpi_id'],RAM_DEVICE);
        ocsResetDevices($line['glpi_id'],HDD_DEVICE);

        ocsAddComputerDevices($line['glpi_id'],$line['ocs_id']);
        
        $queryCom="";
        $dbocs = new DBocs();
        $query2 = "select h.*,b.* from hardware as h inner join bios as b on h.DEVICEID=b.DEVICEID WHERE h.DEVICEID='".$line['ocs_id']."'";
        $result2 = $dbocs->query($query2) or die($dbocs->error());
        if ($dbocs->numrows($result2)==1)
        {
                $line2=$dbocs->fetch_array($result2);
                $queryCom="UPDATE glpi_computers SET serial='".$line2["SSN"]."' ,model=".ocsImportDropdown('glpi_dropdown_model','name',$line2["SMODEL"])." ,fk_glpi_enterprise=".ocsImportEnterprise($line2["SMANUFACTURER"])." WHERE ID='".$line['glpi_id']."'";
                $dbglpi->query($queryCom);

        }
        
        ocsResetLicenses($line['glpi_id']);
        ocsImportSoftware($line['glpi_id'],$line['ocs_id']);

        $query="UPDATE glpi_ocs_link SET last_update=NOW() WHERE ID='$ID'";
        $dbglpi->query($query);
    }
}

les licences sont forcées en 'global' comme l'indique le code...


Plateforme : OS : Windows 2003 Sp1 / logiciel de décompactage : 7Zip / Navigateur : Internet Explorer 6sp2
Serveur OCS: Package Ocs NG v1.0 RC2  - XAMPP version 1.5.1
Serveur GLPI: GLPI v0.7/IIS6/MySQL 5.0.45/ Langage : PHP 5.1.4 / phpMyAdmin 2.6.4

Offline

#2 2005-09-28 18:16:54

cyr.guibert
Member
Registered: 2005-09-28
Posts: 1

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

Effectivement l'import initial du plugin est un peu pauvre.

Et il faut ramer pour convertir les infos d'OCS  vers GLPI.

Pour ma part j'ai réussi à compléter la liste des logiciels, écrans, imprimantes, cartes son, carte graphique, (et les infos constructeurs)
Les plus problématiques me semblent être :
1. adressage IP
En effet l'@IP est géré comme un port ?! C'est en tout cas la seule façon que j'ai trouvé de le positionner correctement
-> 1bis que signifient exactement l'entité "port" : si c'est un port logique (MySQL 3306; FTP 21; partages Windows; etc.)
     comment va t'on pouvoir les connecter à quoi que ce soit ? j'ai pas fouillé le forum mais la doc de base est vide sur tous ces points.

2. lecteurs et disques
Pour les disques et lecteurs ce qui est grave vient plutôt de OCS puisque le lien n'est pas fait entre le support physique et l'entité logique :
2 partitions seront vues comme 2 drives mais il n'y a qu'1 storage sous-jacent.
Bref on ne sait pas où mettre l'espace disque libre !

Ma solution provisoire est de prendre sur tous les disques toutes les lettres de lecteurs de disques, puis de les réattribuer manuellement. C'est loin d'être satisfaisant mais pour nous ça convient bien (<5 serveurs, le reste des machines n'a jamais 2 disques).

3. la gestion des écrans me semble assez extraordinaire
Pourquoi avoir géré les écrans comme des imprimantes ?
certes on peut permuter des écrans sur des machines mais de là à pouvoir les brancher sur plusieurs machines...
Y  a t'il une raison profonde à ce choix ? (j'en ai tiré mon parti pour le moment car OCS ne fournit pas le serial number mais seulement le type)

Je finis là mon investigation des points noirs (même si je pense que le schéma relationnel est bien trop compliqué)

cyr

Last edited by cyr.guibert (2005-09-28 18:18:34)

Offline

#3 2005-09-28 18:31:35

JMD
GLPI - Lead
Registered: 2004-09-13
Posts: 9,180
Website

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

Le plugin est peu pauvre comme vous dites car il s'agissait d'une preversion de travail avant notre rencontre avec l'équipe d'ocs.

Nous collaborons étroitement avec l'équipe d'OCS afin de réaliser un lien consistant entre les deux applications.

Nous communiquerons bientot à ce sujet.


JMD / Jean-Mathieu Doléans - Glpi-project.org - Association Indepnet
Apportez votre pierre au  projet GLPI   : Soutenir

Offline

#4 2005-09-29 09:41:36

puppet
Member
Registered: 2005-07-27
Posts: 25
Website

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

kranck wrote:

Dans glpi/glpi/pluggin/ocs, .../... le code...

Bonjour,

j'ai essayer, et ça marche...
avec le merite de ne pas devoir saisir tous le parc actuel (400 machines au total dont 200 sur le domaire)


* par contre dans GLPI, les champs Type et Modèle serait pratique pour la gestion des ecrans et des imprimantes ( ecran type:CRT modele:dell p1130 - imprimante type: jet d'encre modele: HP CP1700 )
entre autre pour les stats...

cordialement

Puppet


Plateforme prod: GLPI 0.7 / OCSng 4100 (V1) Agents 4032
OS : Windows server SE 2003 Sp1 - Décompactage : 7-Zip
Serveur : XAMPP 1.4.15 = Apache: 2.0.54 (Win32) PHP: 5.0.4 MySQL: 4.1.13
Navigateurs : Internet Explorer 7

Offline

#5 2005-09-29 10:00:38

JMD
GLPI - Lead
Registered: 2004-09-13
Posts: 9,180
Website

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

"* par contre dans GLPI, les champs Type et Modèle serait pratique "  oui oui on vous a bien lu dans "utlisations, Atuces..."

Ca va devenir du lobbing. wink


JMD / Jean-Mathieu Doléans - Glpi-project.org - Association Indepnet
Apportez votre pierre au  projet GLPI   : Soutenir

Offline

#6 2005-12-26 20:02:38

mickey2022
Member
Registered: 2005-12-26
Posts: 1

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

Merci Kranck pour ta modif pour récupérer les serial ...

Juste une chose:
As- tu une idée pour pouvoir récupérer les serials des machines si elles existent déjà ds OCS et GLPI
Si je clique ds le plugin OCS --> Synchronisation des ordinateurs déjà importés les serials ne remontent pas suite à ta modif?

Par contre si je supprime le répertoire ocs-ng de la machine en question, supprime la machine ds ocs  et la fait re-rentrer ds ocs via le script 192.168.0.2.exe (correspondant à l'ip de mon serveur ocs + glpi), j'arrive alors à faire un import via le plugin ocs ds glpi (le seriaal remonte bien)
Pour récupérer le serial ds GLPI

En fait, comment faire la modif sur functions.php  (je pense) pour des machines déjà importées ds glpi?

Merci de ta réponse
Mickey2022

Offline

#7 2005-12-29 10:40:19

jdelbecque
Member
Registered: 2005-11-30
Posts: 28

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

j'ai essayer cette modif mais je galere j'ai plein d'erreur avec function.php

y'aurais t'il moyen de les mettre en telechargement quelquepart afin que je puisse essayer

Offline

#8 2005-12-29 10:57:48

jm.cierniewski
Member
From: Nanterre 92
Registered: 2005-11-02
Posts: 1,655

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

ATTENTION les amis, le post concernant la modif date du 21 Septembre.
Etes vous certain que le dernier plugin ocs n'es pas plus rescent et ne comporte pas déja ce que vous cherchez ?
j'ai peur que vous soyez en train de revenir en arrière...
Moi les serials je les ai avec le plugin actuel


Plateforme :
OS : Windows 2003 Sp1 / logiciel de décompactage : Winzip / Navigateurs : Internet Explorer 6sp1 / firefox 1.5
Installation : Package Ocs NG RC3  - XAMPP version 1.5.1
Serveur  : Apache 2.0.55 / Base : 5.0.18-nt / Langage : PHP 5.1.1 / PhpMyAdmin 2.7.0-pl1

Offline

#9 2005-12-29 10:59:38

jm.cierniewski
Member
From: Nanterre 92
Registered: 2005-11-02
Posts: 1,655

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

pour info, un nouveau plugin ocs datant de novembre fait tout ce que vous voulez
Date Nom  Type  Taille 
07.11.2005  Plugin OCSInventory NG v1.0-RC4  Archive TGZ  21.2 ko 
12.08.2005  Plugin OCSInventory NG v1.0-RC3  Archive TGZ  18.4 ko


Plateforme :
OS : Windows 2003 Sp1 / logiciel de décompactage : Winzip / Navigateurs : Internet Explorer 6sp1 / firefox 1.5
Installation : Package Ocs NG RC3  - XAMPP version 1.5.1
Serveur  : Apache 2.0.55 / Base : 5.0.18-nt / Langage : PHP 5.1.1 / PhpMyAdmin 2.7.0-pl1

Offline

#10 2005-12-29 11:42:44

Jm0u
Member
Registered: 2005-01-05
Posts: 910

Re: Code pour importer le ssn,modèle,fabricant et logiciels pour Ordi.

C clair jm je me disait houa les dev de glpi ny on pas penser bizard.

Mais bon merci a toi pour ta pertinance jm smile:):):)

Jm0u


Navigateurs : Chrome
Installation : Package GLPI 0.84.2
Serveur  : Apache 2 / Base : 5.0.15 / Langage : PHP 4.4.1 pl1 / PhpMyAdmin 2.6.4-pl3

Offline

Board footer

Powered by FluxBB