You are not logged in.
Pages: 1
Bonjour,
J'essaie en vain de faire quelque chose de très simple.
Je souhaiterais pouvoir lister tous les ordinateurs avec leur OS associé (nom et version). Je faisais ça dans problème à l'époque en tapant dans la base OCSInventory. (nous sommes malheureusement passé sous FusionInventory).
J'ai regardé du côté de l'API GLPI et cela ne semble pas possible de faire le lien entre les ordinateurs et les OS car les champs d’affichage ne sont pas proposées par l'API.
Je me suis alors tourné vers la base de données GLPI mais je n'arrive pas à trouver la clé permettant de faire le lien entre la table glpi_computers et les tables glpi_operatingsystems*.
Est-ce que quelqu'un a déjà fait ce genre de chose ?
Cordialement,
Johan
Offline
le lien entre glpi_computers et glpi_operatingsystems se fait via la table de liaison glpi_items_operatingsystems sur l'itemtype Computer et l'items_id
C'est mon jour de bonté :
SELECT glpi_computers.name as Name, glpi_operatingsystems.name as OS, glpi_operatingsystemversions.name as Version
from glpi_computers
inner join glpi_items_operatingsystems on glpi_items_operatingsystems.items_id = glpi_computers.id
inner join glpi_operatingsystems on glpi_operatingsystems.id = glpi_items_operatingsystems.operatingsystems_id
inner join glpi_operatingsystemversions on glpi_operatingsystemversions.id = glpi_items_operatingsystems.operatingsystemversions_id
where glpi_items_operatingsystems.itemtype = 'Computer'
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
C'est en effet Noël, merci ....
J'avais trouvé la table glpi_items_operatingsystems mais je crois que j'aurais été incapable de l'utiliser pour faire le lien
Merci beaucoup !
Offline
Je me permets d'en rajouter une couche du coup ...
En suivant ton exemple, j'arrive à récupérer le modèle de la machine et la version de BIOS :
SELECT glpi_computers.name as Name, glpi_operatingsystems.name as OS, glpi_operatingsystemversions.name as Version, glpi_computermodels.name as Modele, glpi_devicefirmwares.version as BIOS
from glpi_computers
inner join glpi_items_operatingsystems on glpi_items_operatingsystems.items_id = glpi_computers.id
inner join glpi_operatingsystems on glpi_operatingsystems.id = glpi_items_operatingsystems.operatingsystems_id
inner join glpi_operatingsystemversions on glpi_operatingsystemversions.id = glpi_items_operatingsystems.operatingsystemversions_id
inner join glpi_items_devicefirmwares on glpi_items_devicefirmwares.items_id = glpi_computers.id
inner join glpi_devicefirmwares on glpi_devicefirmwares.id = glpi_items_devicefirmwares.devicefirmwares_id
inner join glpi_computermodels on glpi_computermodels.id = glpi_computers.computermodels_id
where glpi_items_operatingsystems.itemtype = 'Computer';
Par contre je n'arrive pas à récupérer le fabricant. L'info se trouve dans la table glpi_manufacturers mais comme lors de mon premier post, je ne trouve pas sur quoi faire le lien
Offline
Juste une question... Pourquoi ne pas utiliser l'API pour ce genre de chose?
Ce serait plus facile et ça évite de triturer la DB.
Offline
Je ne suis pas contre mais j'avais le même problème, je n'arrive pas à lier les computers avec les OS.
Offline
Pour l'API, le plus facile est de faire une recherche et de demander les champs que l'on veut obtenir en réponse.
Si on prend les champs 1, 23, 45 et 63, on a le nom du PC, le fabicant, le nom de l'OS et la version.
Par exemple :
PC130075 ITMediaConsult AG Windows Enterprise
PC130076 ITMediaConsult AG Windows Enterprise
PC130077 ITMediaConsult AG Windows Enterprise
PC150001 Gigabyte Technology Co., Ltd. Windows Enterprise N
PC150002 Gigabyte Technology Co., Ltd. Windows Enterprise N
PC170001 ITMediaConsult AG Windows Enterprise 2016 LTSB
PC180179 ITMediaConsult AG Windows Enterprise 2016 LTSB
Pour arriver à ce résultat, en Powershell, je fais
Search-GlpiItem -ItemType computer -SearchOptions ("AND",1,"is",""),("OR",13,"is",""),("OR",23,"is",""),("OR",45,"is",""),("OR",63,"is","") -Creds $GlpiCreds | ft "1","23", "45", "63" -autosize
Mais ce qui vous intéresse plus particulièrement, c'est la partie
("AND",1,"is",""),("OR",13,"is",""),("OR",23,"is",""),("OR",45,"is",""),("OR",63,"is","")
qui indique les critères de recherches.
Offline
Je ne suis pas contre mais j'avais le même problème, je n'arrive pas à lier les computers avec les OS.
Si vous arrivez à obtenir le résultat que vous voulez dans l'interface web, il y a beaucoup, beaucoup de chance que vous puissiez obtenir le même résultat via l'API.
Et pour obtenir ce que vous voulez, vous faite une recherche dans la liste des "computers" en ajoutant des colones dans le résultat. C'est exactement le même principe avec l'API.
Offline
J'ai testé votre module Powershell qui est pas mal.
Où peut-on trouver la correspondance entre les numéros de champs et leur label ? J'ai l'impression que le champs 13 correspond à la carte graphique.
Offline
Oui, en effet, 13, c'est la carte graphique :-)
En Powershell, on peut faire un
Get-GlpiSearchOptions -Creds $GlpiCreds -ItemType computer
qui renvoie la liste des champs.
Offline
Merci.
Je ne trouve pas la version de BIOS dans les champs =/
Offline
C'est vrai tiens ça...
Ca apparaît comme une composant "Firmware" mais je ne sais pas comment on pourrait le récupérer dans la liste des PC :-/
Offline
Par contre je n'arrive pas à récupérer le fabricant. L'info se trouve dans la table glpi_manufacturers mais comme lors de mon premier post, je ne trouve pas sur quoi faire le lien
Le fabricant est dans la table glpi_computers sous le champ manufacturers_id.
Il suffit de faire la liaison avec la table glpi_manufacturers pour récupérer son nom
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
C'était finalement simple, merci !
Si jamais ça intéresse des gens :
SELECT glpi_computers.name as Name, glpi_manufacturers.name as Manufacturer, glpi_computermodels.name as Modele, glpi_devicefirmwares.version as BIOS, glpi_operatingsystems.name as OS, glpi_operatingsystemversions.name as Version, glpi_computers.date_mod as Date_Modification
from glpi_computers
inner join glpi_items_operatingsystems on glpi_items_operatingsystems.items_id = glpi_computers.id
inner join glpi_operatingsystems on glpi_operatingsystems.id = glpi_items_operatingsystems.operatingsystems_id
inner join glpi_operatingsystemversions on glpi_operatingsystemversions.id = glpi_items_operatingsystems.operatingsystemversions_id
inner join glpi_items_devicefirmwares on glpi_items_devicefirmwares.items_id = glpi_computers.id
inner join glpi_devicefirmwares on glpi_devicefirmwares.id = glpi_items_devicefirmwares.devicefirmwares_id
inner join glpi_computermodels on glpi_computermodels.id = glpi_computers.computermodels_id
inner join glpi_manufacturers on glpi_manufacturers.id = glpi_computers.manufacturers_id;
+--------------------------+-------------------+-----------------------------+----------------------------------+-----------------------------------+---------------------+---------------------+
| Name | Manufacturer | Modele | BIOS | OS | Version | Date_Modification |
+--------------------------+-------------------+-----------------------------+----------------------------------+-----------------------------------+---------------------+---------------------+
| BOB1 | Dell | PowerEdge R720 | 2.7.0 | CentOS | 7.6.1810 | 2019-06-06 14:58:41 |
| BOB2 | Dell | PowerEdge R720 | 2.7.0 | CentOS | 7.6.1810 | 2019-06-06 14:58:41 |
| BOB3 | Dell | PowerEdge R720 | 2.7.0 | CentOS | 7.6.1810 | 2019-06-06 14:58:41 |
Offline
Pages: 1