You are not logged in.
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
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
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
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
"* 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.
JMD / Jean-Mathieu Doléans - Glpi-project.org - Association Indepnet
Apportez votre pierre au projet GLPI : Soutenir
Offline
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
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
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
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
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 :):):)
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