• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Script découverte logiciels installés
#1
Bonjour,

Je fais suite à ces topics qui m'ont aidé pour ce que je souhaite faire :

http://forum.fusioninventory.org/viewtopic.php?id=2248
http://forum.fusioninventory.org/viewtopic.php?id=570

Je souhaite détecter des applications sous Windows qui ne sont pas visible depuis l'ajout et suppression de programmes.

J'ai donc ajouté un fichier perl dans le répertoire d'installation de FusionInventory-agent à l'emplacement suivant : C:\Program Files\FusionInventory-Agent\perl\agent\FusionInventory\Agent\Task\Inventory\Win32 (Agent 2.3.16 sous Windows 7 x64)

Par exemple, on regarde si le fichier favicon.ico existe dans le répertoire d'installation de l'utilisateur et si tel est le cas on ajoute le logiciel dans les logiciels inventoriés sur GLPI :

package FusionInventory::Agent::Task::Inventory::Win32::MySoftwares;

use strict;
use warnings;


sub isEnabled {
return 1;
}

sub doInventory {
my (%params) = @_;

my $inventory = $params{inventory};
my $winpath = $ENV{userprofile};
my $fichappli= "$winpath\\favicon.ico";


if (-e $fichappli) {

_addSoftware(inventory => $inventory, entry => {
'NAME' => 'Application Ciril',
'VERSION' => '1.0',
'COMMENTS' => 'Application Metier',
'FROM' => 'Ciril'
});

}
}

sub _addSoftware {
my (%params) = @_;

my $entry = $params{entry};
$params{inventory}->addEntry(section => 'SOFTWARES', entry => $entry);
}

1;

En lançant l'inventaire manuellement depuis le fichier fusioninventory-agent.bat, j'obtiens les lignes suivantes dans les logs :
[Thu Apr 30 16:44:41 2015][debug] Running FusionInventory::Agent::Task::Inventory::Win32::MySoftwares

<SOFTWARES>
<COMMENTS>Application Metier</COMMENTS>
<FROM>Ciril</FROM>
<NAME>Application Ciril</NAME>
<VERSION>1.0</VERSION>
</SOFTWARES>

Je suppose donc que le fichier perl a été pris en compte car le logiciel remonte bien dans GLPI.

Cependant quand il s'agit d'un inventaire automatique, (forcé depuis GLPI ou depuis http://localhost:62354), l'agent fusioninventory ne prends pas en compte le fichier MySoftwares.pm

Avez-vous une idée d'où cela pourrait venir ?
  Reply
#2
Essaye de redémarer l'agent (qui doit être en mode daemon)
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#3
L'agent n'est pas sur une machine Linux malheureusement mais est sur Windows 7, même en redémarrant la machine, cela ne change rien.
Je précise que j'utilise la version la version 0.85.3 de GLPI avec la version 1.1 de FI.
  Reply
#4
C#est assez étonnant que ça marche dans un cas, mais pas dans l'autre
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#5
Oui c'est surprenant puisque je n'ai pas trouvé davantage d'information sur le forum ...

Si ça peut vous aider, j'ai ce message d'erreur quand j'exécute le bat en local sur la machine, mais bon je ne sais pas s'il est vraiment à prendre à compte puisque l'ajout du logiciel est bien fait dans ce cas là.

C:\Program Files\FusionInventory-Agent>fusioninventory-agent.bat
Wide character in print at ../agent/FusionInventory/Agent/Logger/File.pm line 59
.

Avez-vous des idées pour résoudre ce problème ?

EDIT : Il y a t-il une opération supplémentaire à réaliser sur le serveur ?
  Reply
#6
Après analyse du script, le problème vient tout simplement de la variable d'environnement $ENV{userprofile}. Celle-ci récupère le chemin du profil utilisateur "SYSTEM" c:\users\localservice\. Lorsque le script est lancé par l'intermédiaire de http://localhost:62354.
Mais lors de l'exécution manuel du .bat, la variable d'environnement pointe bien sur l'utilisateur actuellement connecté sur la machine.

Auriez-vous un code PERL pour récupérer le PATH du profil utilisateur connecté sur la machine par l'agent fusion ?
  Reply
#7
je ne sais pas si c'est possible ça
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)