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 2019-06-07 09:57:16

nohaj
Member
Registered: 2019-06-07
Posts: 7

Requête SQL pour lister ordinateurs/OS

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

#2 2019-06-11 18:21:16

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,035

Re: Requête SQL pour lister ordinateurs/OS

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é : wink

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
PHP 5.6 - PHP 7 - MySQL 5.6  + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#3 2019-06-12 09:20:06

nohaj
Member
Registered: 2019-06-07
Posts: 7

Re: Requête SQL pour lister ordinateurs/OS

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 big_smile

Merci beaucoup !

Offline

#4 2019-06-12 09:45:50

nohaj
Member
Registered: 2019-06-07
Posts: 7

Re: Requête SQL pour lister ordinateurs/OS

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 sad

Offline

#5 2019-06-12 10:26:42

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 319

Re: Requête SQL pour lister ordinateurs/OS

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

#6 2019-06-12 11:09:34

nohaj
Member
Registered: 2019-06-07
Posts: 7

Re: Requête SQL pour lister ordinateurs/OS

Je ne suis pas contre mais j'avais le même problème, je n'arrive pas à lier les computers avec les OS.

Offline

#7 2019-06-12 11:20:01

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 319

Re: Requête SQL pour lister ordinateurs/OS

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

#8 2019-06-12 11:22:16

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 319

Re: Requête SQL pour lister ordinateurs/OS

nohaj wrote:

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

#9 2019-06-12 11:40:46

nohaj
Member
Registered: 2019-06-07
Posts: 7

Re: Requête SQL pour lister ordinateurs/OS

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

#10 2019-06-12 11:45:12

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 319

Re: Requête SQL pour lister ordinateurs/OS

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

#11 2019-06-12 11:54:52

nohaj
Member
Registered: 2019-06-07
Posts: 7

Re: Requête SQL pour lister ordinateurs/OS

Merci.

Je ne trouve pas la version de BIOS dans les champs =/

Offline

#12 2019-06-12 15:11:07

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 319

Re: Requête SQL pour lister ordinateurs/OS

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

#13 2019-06-13 11:04:11

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,035

Re: Requête SQL pour lister ordinateurs/OS

nohaj wrote:

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 sad

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
PHP 5.6 - PHP 7 - MySQL 5.6  + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#14 2019-06-19 12:16:10

nohaj
Member
Registered: 2019-06-07
Posts: 7

Re: Requête SQL pour lister ordinateurs/OS

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

Board footer

Powered by FluxBB