Table des matières
Le module d'inventaire est accessible à partir du tableau principal du LRS. Il suffit de cliquer sur l'icône d'inventaire d'une des lignes du tableau pour se retrouver sur l'écran principal du module d'inventaire de la machine ciblée ou d'un groupe. Pour la partie client, ce module utilise le logiciel libre 'OCS Inventory' initié par Didier LIROULET ( http://ocsinventory.sourceforge.net/ ).
Ce module a pour but de lister les différents composants logiciels et matériels constituant le poste client, comme le montre la figure ci-dessous :
Une partie de l'inventaire, en particulier l'inventaire bas-niveau (numéros de série, processeur, mémoire, disques, cartes PCI), est réalisé au moment du boot réseau juste avant l'affichage du menu de boot LRS. L'autre partie nécessite l'installation d'un programme sur les postes clients Windows.
Le meilleur moyen d'installer l'agent est d'utiliser le module de 'Post-Installation' du LRS, ou le module 'Linbox Secure Control'. Vous pouvez aussi l'installer manuellement en lançant le 'setup.exe'.
Le programme d'inventaire peut être téléchargé depuis http://adresse_serveur_lrs dans "Utilitaires Windows à télécharger", "Agent LRS Inventory". Les différentes versions du programme d'inventaire et leur code source sont aussi disponibles sur ftp://ftp.linbox.com/pub/lrs/inventory. Le module d'inventaire Windows est compatible avec les clients OCS Inventory version 2, 3 et NG. Des agents pour MacOS X, et Linux (.deb et .rpm) sont disponibles.
L'installation ne devrait pas poser de problème, il suffit de valider les choix par défaut.
Avant de commencer la copie de fichiers, l'installeur vous demandera de lui fournir le nom (ou l'adresse IP) du serveur LRS, afin de pouvoir lui envoyer les résultats issus de la collecte de données.
Si vous installez l'agent d'inventaire sur un disque qui va être répliqué, lancez le script 'clean.bat' dans 'C:\Program Files\LRS Inventory Agent' avant de lancer la sauvegarde. Ce script va enlever toute trace des inventaires précédents et va remettre à zéro l'identifiant machine de l'inventaire.
L'inventaire peut être lancé de trois façons différentes:
Par défaut, l'inventaire se déclenche automatiquement au moment de la connexion d'un utilisateur avec un délai minimal de 24 heures entre deux inventaires.
Il est possible également via le module 'Linbox Secure Control' de déclencher un inventaire à la demande
Ou mieux de programmer un inventaire périodique dans le LSC, en utilisant le script 'run-inventory-secure.bat'.
Ce dernier mode, présente de nombreux avantages par rapport aux autres. En effet l'inventaire peut être lancé durant la nuit lorsque la bande passante réseau est plus disponible, et ainsi éviter le 'rush' de 8 heures lorsque les utilisateurs se logguent. Le 'spoofing' d'inventaire ou tout DoS est éliminé car l'inventaire est envoyé dans ce cas via un tunnel SSH (l'ouverture du port 80 du serveur devient inutile).
Une option "Configuration du Module" est disponible dans le coin supérieur gauche de l'écran d'inventaire. Cette page d'options contient la description des chemins nécessaires au fonctionnement du module. Habituellement ces paramètres sont positionnés aux bonnes valeurs et il n'est pas nécessaire d'y toucher.
L'inventaire contient différents onglets résumant la configuration matérielle et logicielle du poste client.
Général : informations d'ordre général (type et nom de la machine, numéros de série, système d'exploitation, ...).
Les garanties et localisations peuvent être modifiées en allant sur l'onglet 'Personnalisation'. D'autres champ peuvent être ajoutés sur cette page:
Réseau : interfaces réseaux disponibles et leurs détails (adresse IP et MAC, état, débit ...),
Disques : informations sur les disques et partitions, ainsi que les disques logiques Windows,
Périphériques : imprimantes, scanners, moniteur,
Matériel : processeurs, mémoire, cartes PCI, BIOS,
Logiciels : détails sur les logiciels,
Chaque table dispose également d'une bouton 'CSV' qui permet de télécharger les données affichées à l'écran sous forme de fichier CSV (un fichier texte contenant une ligne par entrée et utilisant le ";" pour séparer les colonnes).
Si le module 'php-gd2' est correctement installé sur le serveur, un petit 'G' orange apparait en haut de certaines colonnes. Cliquer sur ce 'G' permet d'afficher un graphique donnant la répartitions des élements correspondants sur le client ou sur un groupe de clients.
Les données de l'inventaire sont stockées dans une base de données MySQL. Par défaut, seul l'utilisateur 'lrs' peut accéder à la base localement. Vous avez donc besoin de déclarer un nouvel utilisateur pour accéder à la base depuis un outil extérieur comme OpenOffice Base ou MS Access.
Pour créer un utilisateur 'openoffice' identifié par le mot de passe 'lrs' et qui va se connecter depuis l'hôte 'monhote', loggez vous en 'root' sur le LRS et tapez:
mysql inventory mysql> GRANT SELECT ON inventory.* TO 'openoffice'@'myhote' mysql> IDENTIFIED BY 'lrs'; mysql> \q
Vous pouvez aussi avoir besoin d'activer l'accès TCP/IP à la base: éditez le fichier /etc/mysql/my.cnf, commentez la ligne 'skip-networking', et relancez le service mysql avec '/etc/init.d/mysql restart'.
Pour effectuer des requêtes SQL, il faut ensuite comprendre que:
Chaque client a un 'id' unique (voir table 'Machine').
A partir de cet 'id' on retrouve les numéros d'inventaires (champ 'inventory') dans les tables dont le nom commence par 'has'.
Et que à chaque entrée d'inventaire dans les tables 'has', correspond une entrée dans une table sans le préfixe 'has' ('Storage' et 'hasStorage' sont liées par les champs 'id' et 'storage').
Les données de l'inventaire ne sont donc pas dupliquées, et si par exemple, 1000 machines ont la même carte son, on retrouvera une seule entrée dans la table 'Sound'. Cette structure permet aussi de stocker tout l'historique des inventaires sans augmenter considérablement l'espace disque nécessaire au stockage contrairement au schéma original d'OCS Inventory.
Donc pour obtenir la liste des disques logiques, pour le client numéro '4' et l'inventaire '1222', on peut utiliser une requête SQL du type:
select Drive.* from hasDrive, Drive where hasDrive.machine=4 and hasDrive.inventory=1222 and hasDrive.drive=Drive.id;
Le dernier numéro d'inventaire peut être trouvé dans les colonnes 'last*Id' de la table 'Machine'. 'lastBootId' donne le dernier inventaire envoyé durant le boot PXE (données stockées dans les tables 'Boot*'), 'lastCustomId' donne les dernières informations personnalisées saisies (table 'Custom'), et 'lastId' donne le dernier inventaire envoyé par les clients OCS (stocké dans les autres tables).
Pour trouver les inventaires avant une date donnée, vous pouvez obtenir les informations dans la table 'hasHardware' pour les inventaires OCS, ou dans 'hasBootGeneral' pour les inventaires de bas niveau de cette façon:
select has.inventory from hasHardware has, Inventory inv where inv.id=has.inventory and has.machine=MACHINE_ID and inv.date<='2006-01-01'
![]() | |
Attention cette fonctionnalité n'est disponible que pour l'agent OCS "unifié"; en conséquence l'agent OCS pour MS Windows n'en dispose pas. |
Bien que l'agent d'inventaire du LRS soit assez exhaustif, il ne peut remonter que les applications vues par le système d'exploitation: aucune application installée sans passer par le système de paquet de la plate-forme cliente ne sera remonté par l'inventaire standard.
Il existe cependant une possibilité d'analyse de disque dur plus poussée utilisant un agent modifié et un dictionnaire XML de sommes de contrôle. Cette fonction, disponible uniquement dans l'agent OCS Unifié modifié « Linbox », permet la détection de programmes installés en dehors du système de package standard grâce à la signature MD5 de leur binaire.
L'administrateur a la possibilité de renseigner ses propres signatures dans ce dictionnaire, dont l'emplacement est spécifié par le paramètre « dictionary_path » du fichier de configuration LRS /etc/lbs.conf (par défaut /tftpboot/revoboot/lrs-inventory/dictionary/dictionary.xml).
La DTD du dictionnaire est :
<!DOCTYPE Dictionary [
<!ELEMENT Dictionary (Software*)>
<!ELEMENT Software (ProductPath?,ProductName,ExecutableSize?,Company?,
Application?,Type?,ProductVersion?,Comments?)>
<!ATTLIST Software md5sum CDATA #REQUIRED>
<!ELEMENT ProductPath (#PCDATA)>
<!ELEMENT ProductName (#PCDATA)>
<!ELEMENT ExecutableSize (#PCDATA)>
<!ELEMENT Company (#PCDATA)>
<!ELEMENT Application (#PCDATA)>
<!ELEMENT Type (#PCDATA)>
<!ELEMENT ProductVersion (#PCDATA)>
<!ELEMENT Comments (#PCDATA)>
]>Un dictionnaire sera donc une suite d'éléments de ce type:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE REQUEST>
<Dictionary>
<Software md5sum="e406b30dd2947e9e901aba538c68fdf3">
<ProductPath>/usr/bin/ocsinventory-agent<ProductPath>
<ProductName>OCS Inventory Unified Agent<ProductName>
<ExecutableSize>10627<ExecutableSize>
<Company>Linbox - F&AS<Company>
<Application>Inventoring<Application>
<Type>Inventoring<Type>
<ProductVersion>0.6.11<ProductVersion>
<Comments>A useful inventory tool<Comments>
</Software>
<Dictionary>La fonction d'analyse de disque se situe au niveau du fichier lib/Ocsinventory/Agent/Backend/OS/Generic/Packaging/Find.pm. Si votre agent n'en dispose pas, installez une version packagée Linbox. Ce fichier requiert le renseignement d'un certain nombre de paramètres dans /etc/ocsinventory/ocsinventory-agent.cfg :
- OCS_AGENT_DICO
si on souhaite modifier l'emplacement du cache du fichier de dictionnaire (par défaut /etc/ocsinventory/dictionary).
- OCS_AGENT_DICO_DIRS
les répertoires dans lesquels le script va aller chercher les fichiers binaires correspondants à des entrées du dictionnaire. Ces chemins d'accès doivent être séparés par des caractères « : ».
![[Note]](/ucome.rvt/any/fr/Produits/LRS/details/doc/img/note.png)
Pour désactiver cette partie de l'agent, renseigner OCS_AGENT_DICO_DIRS à "".
Il est possible de personnaliser l'inventaire grâce à l'exécution de scripts externes à l'agent d'inventaire. Il suffit pour cela de déposer sur le client les scripts à exécuter dans OCS_AGENT_SCRIPT_PATH (variable définie dans /etc/ocsinventory/ocsinventory-agent.cfg et valant par défaut /etc/ocsinventory/scripts).
Pour injecter des résultats dans l'inventaire à l'aide de ces scripts, ces derniers doivent pouvoir générer sur STDOUT un XML validant la DTD suivante:
<!DOCTYPE REQUEST [ <!ELEMENT REQUEST (CONTENT)> <!ELEMENT CONTENT (SOFTWARES*)> <!ELEMENT SOFTWARES (PUBLISHER?,NAME,VERSION?,FOLDER?,COMMENTS?,FILESIZE?)> <!ELEMENT PUBLISHER (#PCDATA)> <!ELEMENT NAME (#PCDATA)> <!ELEMENT VERSION (#PCDATA)> <!ELEMENT FOLDER (#PCDATA)> <!ELEMENT COMMENTS (#PCDATA)> <!ELEMENT FILESIZE (#PCDATA)> ]>
Soit par exemple:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE REQUEST>
<REQUEST>
<CONTENT>
<SOFTWARES>
<PUBLISHER>Linbox</PUBLISHER>
<NAME>OCS Inventory</NAME>
</SOFTWARES>
</CONTENT>
</REQUEST>Cet inventaire est intégré au reste de l'inventaire puis soumis au serveur par le client.
Pour les postes ne disposant d'aucun accès au LRS, il est possible d'injecter manuellement les inventaire dans la base d'inventaires du LRS.
![]() | |
Cette fonctionnalité n'est pas disponible sur les systèmes équipés de Debian Woody. |
Pour pouvoir utiliser cette fonctionnalité, il faut installer sur le serveur les librairies Perl suivantes: xml-simple et www.
Sur un système Debian, un simple:
apt-get update; apt-get install libxml-simple-perl libwww-perl
suffira. Se référer à la documentation du système d'exploitation pour les autres distributions.
Voici comment récupérer un inventaire sur plateforme MS Windows équipée de l'agent d'inventaire:
Ouvrir une fenêtre de commande DOS (exécuter -> cmd),
Se rendre dans le répertoire contenant l'agent, par exemple:
cd c:\Program Files\OCS Inventory NG
Exécuter la collecte à l'aide de la commande suivante:
start /wait ocsinventory.exe /local /xml
Récupérer l'inventaire qui vient d'être généré dans le répertoire courant (<MACHINE>-<HORODATAGE>.xml).
Pour injecter l'inventaire dans le LRS, après avoir copié le fichier .xml sur le serveur (par exemple dans /tmp à l'aide de WInSCP), utilisez la commande suivante:
/usr/share/webmin/lrs-inventory/agent/Ocsinventory_local.pl --url http://127.0.0.1/ocsinventory --file /tmp/<MACHINE>-<HORODATAGE>.xml
Installez la bibliothèque WWW de Perl (voir plus haut) si l'erreur suivante apparaît:
Can't locate LWP/UserAgent.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/share/webmin/lrs-inventory/agent/Ocsinventory_local.pl line 15. BEGIN failed--compilation aborted at /usr/share/webmin/lrs-inventory/agent/Ocsinventory_local.pl line 15.
Installez la bibliothèque XML-Simple de Perl (voir plus haut) si l'erreur suivante apparaît:
Can't locate XML/Simple.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/share/webmin/lrs-inventory/agent/Ocsinventory_local.pl line 16. BEGIN failed--compilation aborted at /usr/share/webmin/lrs-inventory/agent/Ocsinventory_local.pl line 16.














![[Avertissement]](/ucome.rvt/any/fr/Produits/LRS/details/doc/img/warning.png)