You are not logged in.
Salut !
J'ai installé et configuré OCS Inventory pour qu'il utilise la même base de données MySQL que GLPI avec EasyPhp.
J'ai pu ainsi commencer à faire les transferts de données entre ces 2 softs :
Récupération des softs (et versions) installés sur les machines du parc
INSERT INTO glpi_software(name, version)
SELECT DISTINCT name, version FROM softwares;
Récupération des noms des postes scannés lors de l'inventaire
INSERT INTO GLPI_computers(name)
SELECT DISTINCT deviceID FROM softwares
Lien entre les postes détectés et les logiciels installés
(d'abord remplir le table glpi_licenses avec des valeurs bidon)
INSERT INTO glpi_licenses(sID)
(SELECT DISTINCT glpi_software.ID FROM glpi_software)
le lien qui fonctionne
INSERT INTO glpi_inst_software(cID, license)
(SELECT DISTINCT glpi_computers.ID, glpi_software.ID
FROM glpi_computers, softwares, glpi_software
WHERE glpi_computers.name = softwares.DeviceID
AND softwares.name = glpi_software.name
AND softwares.version = glpi_software.version
)
Récupération des types de processeurs
INSERT INTO glpi_device_processor (designation, frequence)
SELECT DISTINCT processort,processors FROM hardware
Récupération des différents types de ram
INSERT INTO glpi_device_ram (designation)
SELECT DISTINCT memory FROM hardware;
Mais à ce niveau je pige pas d'où provient le champ device_type de la table glpi_computer_device qui fait le lien entre les ordinateurs et leurs périphériques. Les nombres contenus dans ce champ proviennent t'ils du code en php ou y a t'il une table que je n'aurais pas vu?
merci d'avance
++
Offline
je crois que tu as la réponse dans dans le fichier glpi/glpi/config/config.php.
Tu as toute les correspondances entre numériques et nom de table.
Voilà!
Offline
// DEVICE TYPE
define("MOBOARD_DEVICE","1");
define("PROCESSOR_DEVICE","2");
define("RAM_DEVICE","3");
define("HDD_DEVICE","4");
define("NETWORK_DEVICE","5");
define("DRIVE_DEVICE","6");
define("CONTROL_DEVICE","7");
define("GFX_DEVICE","8");
define("SND_DEVICE","9");
define("PCI_DEVICE","10");
define("CASE_DEVICE","11");
define("POWER_DEVICE","12");
tu parles de ça?
Mais pour faire le lien entre les périphériques que j'ai recensé et les ordinateurs sur lesquels il sont installé, ça va pas être simple...
Ce serait plus simple à utiliser si ils étaient définis dans une table.
Offline
oui, je parle bien de ça, je crois qu'il n'y a que ça qui fait le lien entre le numérique device_type et la table corespondante pour savoir à quel table correspond le nombre du device type.
Offline
Effectivement c'est le seul lien.
Bazile Lebeau
Offline
Pour faire mon lien, va donc faloir que je crée une table contenant les info du fichier config.php.
Je vois pas d'autre solution.
Offline
ce sont des données statiques, pas besoin de les mettre dans une table pour les utiliser.
A chaque fois que vous avez un processeur vous mettez le device_type = 2 dans glpi_computer_device.
Bazile Lebeau
Offline
J'en suis arrivé à la même conclusion
je viens de faire le lien entre les ordinateurs et leur ram. ça donne ça :
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_ram.ID, glpi_computers.ID
FROM glpi_computers, hardware, glpi_device_ram
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.memory = glpi_device_ram.designation
)
UPDATE glpi_computer_device,glpi_computers, hardware,glpi_device_ram
SET device_type = '3'
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.memory = glpi_device_ram.designation
Si vous avez le temps de le tester, dites moi si ça fonctionne chez vous aussi.
Bon plus qu'à faire la même chose pour les autres périph...
Offline
arf nan, faites pas ma requête pour la ram.
J'ai fait ça pour les processeurs :
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_processor.ID, glpi_computers.ID
FROM glpi_computers, hardware, glpi_device_processor
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.processort = glpi_device_processor.designation
AND hardware.processors = glpi_device_processor.frequence
)
UPDATE glpi_computer_device,glpi_computers, hardware,glpi_device_ram
SET device_type = '2'
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.processort = glpi_device_processor.designation
AND hardware.processors = glpi_device_processor.frequence
et ça a écrasé mes données
Il doit me manquer une ou 2 condition je crois...
Last edited by neobyte (2005-05-20 11:01:42)
Offline
#Lien entre les ordinateurs et leur ram
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_ram.ID, glpi_computers.ID
FROM glpi_computers, hardware, glpi_device_ram
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.memory = glpi_device_ram.designation
) ;
UPDATE glpi_computer_device,glpi_computers, hardware,glpi_device_ram
SET device_type = '3'
WHERE device_type ='0'
AND glpi_computers.name = hardware.DeviceID
AND hardware.memory = glpi_device_ram.designation;
#Lien entre les ordinateurs et leur processeur
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_processor.ID, glpi_computers.ID
FROM glpi_computers, hardware, glpi_device_processor
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.processort = glpi_device_processor.designation
AND hardware.processors = glpi_device_processor.frequence
) ;
UPDATE glpi_computer_device,glpi_computers, hardware,glpi_device_processor
SET device_type = '2'
WHERE device_type ='0'
AND glpi_computers.name = hardware.DeviceID
AND hardware.processort = glpi_device_processor.designation
AND hardware.processors = glpi_device_processor.frequence;
ça marche
Last edited by neobyte (2005-05-20 14:25:18)
Offline
J'ai fais ça depuis tout à l'heure si ça interesse quelqu'un...
#Récupération des différents types de hdd
INSERT INTO glpi_device_hdd (designation,specif_default)
SELECT DISTINCT type,total FROM drives
WHERE type = 'Hard Drive';
#Lien entre les ordinateurs et leur hdd
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_hdd.ID, glpi_computers.ID
FROM glpi_computers, drives, glpi_device_hdd
WHERE glpi_computers.name = drives.DeviceID
AND drives.type = glpi_device_hdd.designation
AND drives.total = glpi_device_hdd.specif_default
) ;
UPDATE glpi_computer_device,glpi_computers, drives,glpi_device_hdd
SET device_type = '4'
WHERE device_type ='0'
AND glpi_computers.name = drives.DeviceID
AND drives.type = glpi_device_hdd.designation
AND drives.total = glpi_device_hdd.specif_default;
#Récupération des différents types de lecteur de CD
INSERT INTO glpi_device_drive (designation)
(SELECT DISTINCT type FROM drives
WHERE type = 'CD-ROM Drive');
#Lien entre les ordinateurs et leur lecteur CD
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_drive.ID, glpi_computers.ID
FROM glpi_computers, drives, glpi_device_drive
WHERE glpi_computers.name = drives.DeviceID
AND drives.type = glpi_device_drive.designation
) ;
UPDATE glpi_computer_device,glpi_computers, drives,glpi_device_drive
SET device_type = '6'
WHERE device_type ='0'
AND glpi_computers.name = drives.DeviceID
AND drives.type = glpi_device_drive.designation;
Offline
voila la suite ...
#Récupération des différents types de carte son
INSERT INTO glpi_device_sndcard (designation)
SELECT DISTINCT name FROM sounds
;
#Lien entre les ordinateurs et leur carte son
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_sndcard.ID, glpi_computers.ID
FROM glpi_computers, sounds, glpi_device_sndcard
WHERE glpi_computers.name = sounds.DeviceID
AND sounds.name = glpi_device_sndcard.designation
) ;
UPDATE glpi_computer_device,glpi_computers, sounds,glpi_device_sndcard
SET glpi_computer_device.device_type = '9'
WHERE glpi_computer_device.device_type ='0'
AND glpi_computers.name = sounds.DeviceID
AND sounds.name = glpi_device_sndcard.designation;
#Récupération des différents types de carte graphique
INSERT INTO glpi_device_gfxcard(designation)
SELECT DISTINCT name FROM videos
;
#Lien entre les ordinateurs et leur carte son
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_gfxcard.ID, glpi_computers.ID
FROM glpi_computers, videos, glpi_device_gfxcard
WHERE glpi_computers.name = videos.DeviceID
AND videos.name = glpi_device_gfxcard.designation
) ;
UPDATE glpi_computer_device,glpi_computers, videos,glpi_device_gfxcard
SET glpi_computer_device.device_type = '8'
WHERE glpi_computer_device.device_type ='0'
AND glpi_computers.name = videos.DeviceID
AND videos.name = glpi_device_gfxcard.designation;
Enfin bon, je vais arrêter de poster mes p'tites requêtes SQL si tout le monde s'en fout.
Offline
lol c'est tjs interessant mais spam pas le forum
Offline
c pas du spam c dans une rubrique ... en tout cas je vais etudier ca de près merci
Offline
dsl si je "spam" mais y a pas grand monde qui me répond ..
j'ai rajouté le lien avec l'os :
#Récupération des différents OS installés
INSERT INTO glpi_dropdown_os(name)
SELECT DISTINCT osname FROM hardware
WHERE osname NOT LIKE 'NULL';
#Lien entre les ordinateurs et leur OS
UPDATE glpi_computers, hardware, glpi_dropdown_os
SET os = glpi_dropdown_os.ID
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.osname = glpi_dropdown_os.name
Bon week-end à tous et ++
Offline
Ne vous excusez pas
Il est toujours intéressant d'avoir des retours de la sorte.
En revanche vous pouvez modifier vos messages sans problèmes lorsqu'il s'agit juste d'y apporter une correction, cela rend le thread beacoup plus lisible.
Bonne continuation
JMD / Jean-Mathieu Doléans - Glpi-project.org - Association Indepnet
Apportez votre pierre au projet GLPI : Soutenir
Offline
voila la suite...
#Récupération des différents types d'interface réseau
INSERT INTO glpi_device_iface (designation, bandwidth, comment, specif_default)
(SELECT DISTINCT description, speed, ipaddress, macaddr FROM networks );
#Lien entre les ordinateurs et leur interface réseau
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_iface.ID, glpi_computers.ID
FROM glpi_computers, networks, glpi_device_iface
WHERE glpi_computers.name = networks.DeviceID
AND networks.description = glpi_device_iface.designation
AND networks.ipaddress = glpi_device_iface.comment
) ;
UPDATE glpi_computer_device,glpi_computers, networks, glpi_device_iface
SET device_type = '5'
WHERE device_type ='0'
AND glpi_computers.name = network.DeviceID
AND networks.description = glpi_device_iface.designation
AND networks.ipaddress = glpi_device_iface.comment;
Je place l'adresse IP dans le champ "comment" puisqu'il n'y a pas de champ à cet effet.
#Récupération des différentes imprimantes
INSERT INTO glpi_printers (name, comments)
(SELECT DISTINCT name, port FROM printers );
Par contre je ne vois pas comment faire le lien avec les pcs sur lesquels elles sont installées.
#Récupération des différentes entreprises (moniteurs)
INSERT INTO glpi_enterprises (name)
(SELECT DISTINCT manufacturer FROM monitors );
#Récupération des différents moniteurs
INSERT INTO glpi_monitors (name)
(SELECT DISTINCT description FROM monitors );
idem que pour les imprimantes.
Faut t'il créer une table "glpi_device_moniters" ??
Sinon OCS Inventory ne récupère pas d'info sur la carte mère , donc on ne peut pas remplir la base de GLPI avec.
Offline
question stupide: comment on recupere la base de ocsi?
parce que glpi c bien gentil mais faut tout rentrer a la main c lourd donc je foudrais manipuler la base ocsi
Offline
réponse à la question stupide :
tu installes OCS Inventory et tu le configure pour qu'il utilise la même base de bonnée que GLPI (sur ton serveur MySQL).
Ce dernier inventorie ton parc et stocke le résulat dans ta base.
Après tu exécutes une par une les requetes SQL qui sont au dessus (à partir de easyphp dans l'onglet SQL).
Et là c'est magique la base de GLPI est remplie toute seule ..!
Last edited by neobyte (2005-05-23 15:24:03)
Offline
C'est une bonne chose ce genre de routines, ça nous permet de voir que cela marche, merci.
D'un autre coté je tiens à signaler que nous allons (dès que la prochaine version d'OCS inventory NG) sera sortie commencer a travailler sur l'intégration des sources vers GLPI.
La façon de faire sera surement différente, et je recomande donc aux utilisateurs qui peuvent attendre un peu, de ne pas se précipiter corps et biens vers cette solution, parce que cela risque d'être difficile de faire machine arriere ensuite.
Bazile Lebeau
Offline
c sur que faire machine arriere ne serait pas simple mais sommes nous vraiment assuré d'avoir un lien entre ocsi et glpi dans la vserion d ocsi NG) on entend beaucoup parlé de ce lien mais dans un avenir plutot lointain et incertain
Offline
Bon pour vous simplifier la mise, voilà toutes les requêtes en une fois :
#Récupération des softs (et versions) installés sur les machines du parc
INSERT INTO glpi_software(name, version)
SELECT DISTINCT name, version FROM softwares;
#Récupération des noms des postes scannés lors de l'inventaire
INSERT INTO GLPI_computers(name)
SELECT DISTINCT deviceID FROM softwares;
#Lien entre les postes détectés et les logiciels installés
INSERT INTO glpi_licenses(sID)
(SELECT DISTINCT glpi_software.ID FROM glpi_software);
#le lien qui fonctionne
INSERT INTO glpi_inst_software(cID, license)
(SELECT DISTINCT glpi_computers.ID, glpi_software.ID
FROM glpi_computers, softwares, glpi_software
WHERE glpi_computers.name = softwares.DeviceID
AND softwares.name = glpi_software.name
AND softwares.version = glpi_software.version
);
#Récupération des différents types de ram
INSERT INTO glpi_device_ram (designation)
SELECT DISTINCT memory FROM hardware;
#Lien entre les ordinateurs et leur ram
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_ram.ID, glpi_computers.ID
FROM glpi_computers, hardware, glpi_device_ram
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.memory = glpi_device_ram.designation
) ;
UPDATE glpi_computer_device,glpi_computers, hardware,glpi_device_ram
SET device_type = '3'
WHERE device_type ='0'
AND glpi_computers.name = hardware.DeviceID
AND hardware.memory = glpi_device_ram.designation;
#Récupération des types de processeurs
INSERT INTO glpi_device_processor (designation, frequence)
SELECT DISTINCT processort,processors FROM hardware;
#Lien entre les ordinateurs et leur processeur
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_processor.ID, glpi_computers.ID
FROM glpi_computers, hardware, glpi_device_processor
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.processort = glpi_device_processor.designation
AND hardware.processors = glpi_device_processor.frequence
) ;
UPDATE glpi_computer_device,glpi_computers, hardware,glpi_device_processor
SET device_type = '2'
WHERE device_type ='0'
AND glpi_computers.name = hardware.DeviceID
AND hardware.processort = glpi_device_processor.designation
AND hardware.processors = glpi_device_processor.frequence;
#Récupération des différents types de hdd
INSERT INTO glpi_device_hdd (designation,specif_default)
SELECT DISTINCT type,total FROM drives
WHERE type = 'Hard Drive';
#Lien entre les ordinateurs et leur hdd
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_hdd.ID, glpi_computers.ID
FROM glpi_computers, drives, glpi_device_hdd
WHERE glpi_computers.name = drives.DeviceID
AND drives.type = glpi_device_hdd.designation
AND drives.total = glpi_device_hdd.specif_default
) ;
UPDATE glpi_computer_device,glpi_computers, drives,glpi_device_hdd
SET device_type = '4'
WHERE device_type ='0'
AND glpi_computers.name = drives.DeviceID
AND drives.type = glpi_device_hdd.designation
AND drives.total = glpi_device_hdd.specif_default;
#Récupération des différents types de lecteur de CD
INSERT INTO glpi_device_drive (designation)
(SELECT DISTINCT type FROM drives
WHERE type = 'CD-ROM Drive');
#Lien entre les ordinateurs et leur lecteur CD
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_drive.ID, glpi_computers.ID
FROM glpi_computers, drives, glpi_device_drive
WHERE glpi_computers.name = drives.DeviceID
AND drives.type = glpi_device_drive.designation
) ;
UPDATE glpi_computer_device,glpi_computers, drives,glpi_device_drive
SET device_type = '6'
WHERE device_type ='0'
AND glpi_computers.name = drives.DeviceID
AND drives.type = glpi_device_drive.designation;
#Récupération des différents types de carte son
INSERT INTO glpi_device_sndcard (designation)
SELECT DISTINCT name FROM sounds ;
#Lien entre les ordinateurs et leur carte son
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_sndcard.ID, glpi_computers.ID
FROM glpi_computers, sounds, glpi_device_sndcard
WHERE glpi_computers.name = sounds.DeviceID
AND sounds.name = glpi_device_sndcard.designation
) ;
UPDATE glpi_computer_device,glpi_computers, sounds,glpi_device_sndcard
SET glpi_computer_device.device_type = '9'
WHERE device_type ='0'
AND glpi_computers.name = sounds.DeviceID
AND sounds.name = glpi_device_sndcard.designation;
#Récupération des différents types de carte graphique
INSERT INTO glpi_device_gfxcard(designation)
SELECT DISTINCT name FROM videos
;
#Lien entre les ordinateurs et leur carte son
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_gfxcard.ID, glpi_computers.ID
FROM glpi_computers, videos, glpi_device_gfxcard
WHERE glpi_computers.name = videos.DeviceID
AND videos.name = glpi_device_gfxcard.designation
) ;
UPDATE glpi_computer_device,glpi_computers, videos,glpi_device_gfxcard
SET glpi_computer_device.device_type = '8'
WHERE glpi_computer_device.device_type ='0'
AND glpi_computers.name = videos.DeviceID
AND videos.name = glpi_device_gfxcard.designation;
#Récupération des différents OS installés
INSERT INTO glpi_dropdown_os(name)
SELECT DISTINCT osname FROM hardware
WHERE osname NOT LIKE 'NULL';
#Lien entre les ordinateurs et leur OS
UPDATE glpi_computers, hardware, glpi_dropdown_os
SET os = glpi_dropdown_os.ID
WHERE glpi_computers.name = hardware.DeviceID
AND hardware.osname = glpi_dropdown_os.name ;
#Récupération des différents types d'interface réseau
INSERT INTO glpi_device_iface (designation, bandwidth, comment, specif_default)
(SELECT DISTINCT description, speed, ipaddress, macaddr FROM networks );
#Lien entre les ordinateurs et leur interface réseau
INSERT INTO glpi_computer_device( FK_device, FK_computers ) (
SELECT DISTINCT glpi_device_iface.ID, glpi_computers.ID
FROM glpi_computers, networks, glpi_device_iface
WHERE glpi_computers.name = networks.DeviceID
AND networks.description = glpi_device_iface.designation
AND networks.ipaddress = glpi_device_iface.comment
) ;
UPDATE glpi_computer_device,glpi_computers, networks, glpi_device_iface
SET device_type = '5'
WHERE device_type ='0'
AND glpi_computers.name = networks.DeviceID
AND networks.description = glpi_device_iface.designation
AND networks.ipaddress = glpi_device_iface.comment;
#Récupération des différentes imprimantes
INSERT INTO glpi_printers (name, comments)
(SELECT DISTINCT name, port FROM printers );
#Récupération des différentes entreprises (moniteurs)
INSERT INTO glpi_enterprises (name)
(SELECT DISTINCT manufacturer FROM monitors );
#Récupération des différents moniteurs
INSERT INTO glpi_monitors (name)
(SELECT DISTINCT description FROM monitors );
Le problème est que lors que vous voulez rafraichir votre base (nouveaux PCs installés), si vous relancez les requêtes précédentes vous aurez les anciens PCs en double.
Solution provisoire : vider votre base de données avant de l'exécuter :
TRUNCATE TABLE glpi_software;
TRUNCATE TABLE glpi_computers;
TRUNCATE TABLE glpi_licenses;
TRUNCATE TABLE glpi_inst_software;
TRUNCATE TABLE glpi_device_ram;
TRUNCATE TABLE glpi_computer_device;
TRUNCATE TABLE glpi_device_processor;
TRUNCATE TABLE glpi_device_hdd;
TRUNCATE TABLE glpi_device_drive;
TRUNCATE TABLE glpi_device_sndcard;
TRUNCATE TABLE glpi_device_gfxcard;
TRUNCATE TABLE glpi_dropdown_os;
TRUNCATE TABLE glpi_device_iface;
TRUNCATE TABLE glpi_printers;
TRUNCATE TABLE glpi_enterprises;
TRUNCATE TABLE glpi_monitors;
Mais là aussi y a un pb : si vous avez des suivis d'intervention en cours, je ne garantie pas que GLPI fasse la correspondance.
Offline
c sur que faire machine arriere ne serait pas simple mais sommes nous vraiment assuré d'avoir un lien entre ocsi et glpi dans la vserion d ocsi NG) on entend beaucoup parlé de ce lien mais dans un avenir plutot lointain et incertain
C'est la tache de fond pour la prochaine version de GLPI donc a priori ça devrait quand meme arriver rapidement.
GLPI est un logiciel libre, la seule chose dont vous êtes assuré c'est d'avoir le droit de modifier et d'utiliser les sources comme vous le voulez, à partir de là vous avez toutes les perspéctives de développement futur qui s'ouvrent à vous.
Pour ce qui est de l'avenir lointain et incertain je ne vois pas sur quoi vous vous basez pour arriver à de telles conclusions.
Bazile Lebeau
Offline
je pense qu il se base sur le fait que plusieurs fois la question du planning et du besoin de vous reunir avec ocsi pour établir un accord pour lier les deux logiciels
Offline
Réponse à Satch et Chromeboy
Ce n'est pas une question d'accord ou non ...
La volonté de plugger OCS NG et GLPI est là des deux cotés des développeurs.
Maintenant, on a dit que c'était prévu pour la version 0.6 jusque là je vois pas où se pose le problème.
S'il y a des personnes qui trouvent que ça avance pas assez vite et bien les solutions sont relativement simples :
- Elles retroussent leurs manches et se mettent à coder, à écrire de la doc et participer activement à GLPI
Ou
- Elles sortent leur chequier et font des dons pour soutenir le projet de façon à ce que l'on puisse recruter des developeurs supplémentaires.
Un peu plus d'utilisateurs-contributeurs et moins de "consommateurs" de logiciels libres ça changerait !
JMD / Jean-Mathieu Doléans - Glpi-project.org - Association Indepnet
Apportez votre pierre au projet GLPI : Soutenir
Offline