Topic: Scripts personnalisés

Bonjour,

Je teste en ce moment FusionInventory dans l'optique de remplacer OCSNG qui en ce moment est lié à Glpi.

L'agent OcsNg permettait d'ajouter des scripts personnalisés (Au moins pour les agents windows) afin de remonter des informations d'inventaire supplémentaire.

Sur le Wiki d'OcsNg : http://wiki.ocsinventory-ng.org/index.p … _Scripting

L'intégration de cette fonctionnalité est-elle prévu dans l'agent FusionInventory ?

Par avance merci,

Cdt.

Re: Scripts personnalisés

Bonjour,

C'est moi qui avait développé cette fonction sur OCS smile On a un mécanisme similaire mais uniquement pour UNIX pour le moment, je pense qu'on peut facilement l'étendre à Windows. vous avez besoin de quoi exactement ?

Please contact Fusioninventory Partners companies if you look for a FusionInventory on site expert.
→ http://www.fusioninventory.org/partners/

Re: Scripts personnalisés

En fait nous nous en servons pour remonter la présence de logiciel qui n'apparaissent pas dans "Ajout / suppression de programme".

Certains logiciels que nous utilisons ne nécessitent pas "d'installation", une simple copie de fichiers suffit. Nous vérifions donc juste la présence de l'exécutable dans un dossier de la station.

Merci par avance.

Re: Scripts personnalisés

Ok, c'est simple a prendre en charge via un petit Perl de quelques lignes. Voici un exemple.

Pour cet exemple, le fichier doit être enregistré dans le dossier lib/FusionInventory/Agent/Task/Inventory/OS/MyCompany/MySoftware.pm , en effet, le nom du paquet indiquer dans la première ligne indique le chemin vers le fichier.

package FusionInventory::Agent::Task::Inventory::OS::MyCompany::MySoftware;

use strict;
use warnings;

sub isInventoryEnabled {1}

sub doInventory {
    my $params = shift;
    my $inventory = $params->{inventory};

    if (-f 'c:/tmp/foobar.log') {
        $inventory->addSoftware ({
                'NAME'          => 'Foobar',
                'VERSION'       => 'unknown',
                'COMMENTS'      => 'Software from my Company',
                'FROM'          => 'mycompany'
                });
    }
}

1;
Please contact Fusioninventory Partners companies if you look for a FusionInventory on site expert.
→ http://www.fusioninventory.org/partners/

Re: Scripts personnalisés

Merci pour votre réponse rapide.

Mes applis sont bien remontées après quelques modifications du script.

Cdt.

Re: Scripts personnalisés

Super big_smile

Please contact Fusioninventory Partners companies if you look for a FusionInventory on site expert.
→ http://www.fusioninventory.org/partners/

Re: Scripts personnalisés

Bonsoir,
Je veux bien un peu plus de détail sur votre modification qui fonctionne de votre côté s'il vous plaît smile

Pour ma part, j'ai donc créé :
un dossier :
c:\program86\FusionInventory-Agent\perl\lib\FusionInventory\Agent\Task\Inventory\OS\IBM\
contenant un ficier GIIBM.pm

Ce fichier contient  donc :

package FusionInventory::Agent::Task::Inventory::OS::IBM::GIIBM;

use strict;
use warnings;
my $vers;
my $fichappli="C:/Program Files/IBM/GI-IBM/version.txt";
#'C:/Program Files (x86)/IBM/GI-IBM'

sub isInventoryEnabled {1}

sub doInventory {
    my $params = shift;
    my $inventory = $params->{inventory};

    if (-f $fichappli) {
    
        #Récupération de la version de l'application
        open (FichVer, $fichappli) or die "Fichier $fichappli nom présent  $!"; 
        while (<FichVer>) {
            chomp;
            $vers =  "$_";
        }    
        close (FichVer);
        
        $inventory->addSoftware ({
                'NAME'          => 'GI-IBM',
                'VERSION'       => '$vers',
                'COMMENTS'      => 'Logiciel interne',
                'FROM'          => 'IBM'
                });
    }
}

1;

Je n'ai pas encore fouillé les arcanes de l'agent et la commande perl fusioninventory-agent -D  -f ne me permet pas d'avoir un retour sur la communication qui ne se fait plus avec cette modif, entre le serveur et l'agent

Aussi si vous avez un complément d'info et la commande pour mieux déboguer l'agent
Par avance merci
Bien à vous

Re: Scripts personnalisés

Lance l'agent avec le paramètre : --debug

Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com

Re: Scripts personnalisés

Vous pouvez lancer l'agent à la main de la façon suivante :

Ouvez une console cmd.exe en administrateur
placez-vous dans le dossier c:/Program Files/FusionInventory-Agent/perl/bin
et lancez : perl fusioninventory-agent --debug

Please contact Fusioninventory Partners companies if you look for a FusionInventory on site expert.
→ http://www.fusioninventory.org/partners/

10 (edited by axil_76 2011-11-16 13:22:08)

Re: Scripts personnalisés

bonjour,
pour ma part j'utilise des fichiers de signature pour identifier les logiciels qui n'apparaissent pas dans Ajout / suppression de programme

ca donne ca sous glpi

http://img819.imageshack.us/img819/9931/image46xm.th.jpg
http://img221.imageshack.us/img221/1015/image45nf.th.jpg




il me suffit de rajouter mon code perl sous lib/FusionInventory/Agent/Task/Inventory/OS/MyCompany/MySoftware.pm pour récupérer cette fonctionnalité du client OCS ?

Re: Scripts personnalisés

bonjour
afin de remonter des logiciels propre à mon client, j'ai dupliqué Softwares.pm en Mysoftware.pm
J'ai modifié l'entête et l'information logicielle ne provient plus de pkginfo -l mais de head -1 /var/sis/CP*.SIS
J'ai aussi modifié les expressions régulières pour remonter correctement les informations VENDOR,NAME, etc...
Cependant quand je lance l'agent il me retourne une erreur :
[debug] Running FusionInventory::Agent::Task::Inventory::Input::Solaris::MySoftwares
[debug] unexpected error in FusionInventory::Agent::Task::Inventory::Input::Solaris::MySoftwares: no entry at /root/fusioninventory-agent_solaris-10-sparc_2.2.2-1/perl/agent/FusionInventory/Agent/Task/Inventory/Inventory.pm line 159, <$handle> line 1.


Une explication?

Re: Scripts personnalisés

Tu dois passer une clé “entry” vide à $inventory->addEntry()

Please contact Fusioninventory Partners companies if you look for a FusionInventory on site expert.
→ http://www.fusioninventory.org/partners/

Re: Scripts personnalisés

Bonjour,

j'ai un problème pour l'inventaire SNMP, impossible de faire une découverte via SNMP, cela retourne "Unable to find agent to run this job" et "No devices to inventory".Si je fais le test de la commande snmpwalk depuis le terminal du serveur ou est installer GLPI + Fusion ca marche,

RHEL-6
GLPI : glpi-0.83
FUSION : fusioninventory-for-glpi-metapackage_0.83_1.0-RC2
Agent : fusioninventory-agent_rhel-5.6-x86_64_2.2.2-1

Bien cordialement.

stagiaire : supervision et inventaire

Re: Scripts personnalisés

j'en ai bien l'impression seulement mon code est quasi identique a celui de Softwares.pm donc je ne vois pas mon erreur
Si des fois ça te sautait aux yeux...

package FusionInventory::Agent::Task::Inventory::Input::Solaris::MySoftwares;

use strict;
use warnings;

use FusionInventory::Agent::Tools;

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

    return 
        !$params{no_category}->{software} &&
        canRun('head');
}

sub doInventory {
    my (%params) = @_;
    my $inventory = $params{inventory};
    my $logger    = $params{logger};
    my $testrep = 0;
    opendir(DIR,'/var/sis/') || ($testrep=1) ;
    if ($testrep==0)
    {
        my $handle = getFileHandle(
            command => 'head -1 /var/sis/CP*.SIS',
            logger  => $logger,
        );
        return unless $handle;
        my $software;
        while (my $line = <$handle>) {
                if ($line =~ /^==.+$/) {
                        $inventory->addEntry(
                            section => 'SOFTWARES',
                            entry   =>  $software
                );
                undef $software;
            } elsif ($line =~ /^.+;(.+);.+;.+/) {
                $software->{NAME} = $1;
            } elsif ($line =~ /^.+;.+;(.+);.+/) {
                $software->{VERSION} = $1;
            } elsif ($line =~ /^(.+);.+;.+;.+/) {
                $software->{PUBLISHER} = $1;
            } elsif ($line =~ /^.+;.+;.+;(.+)/) {
                $software->{COMMENTS} = $1;
            }
        }
        close $handle;
      }
    closedir(DIR);
}

1;

Re: Scripts personnalisés

Nabil, merci d'ouvrir un nouveau sujet dans la bonne catégorie.

Nicolas, déjà je ne comprends pas pourquoi tu fais un opendir vu que tu n'utilises pas “DIR” après. Après, il faudrait un exemple de sortie de "head -1 /var/sis/CP*.SIS"pour mieux comprends. Mais a vu de nez, il serait intéressant de faire un :

use Data::Dumper:
print Dumper($software);

juste avant le $inventory->addEntry( pour bien voir ce que tu veux coller dans l'inventaire.

Please contact Fusioninventory Partners companies if you look for a FusionInventory on site expert.
→ http://www.fusioninventory.org/partners/

16 (edited by nicolas996 2012-07-16 08:13:26)

Re: Scripts personnalisés

le opendir est viré c'était un reliquat de test.
Clairement $software est indéfini dans mon MySoftware.pm contrairement a ce qui se passe dans Software.pm et je ne trouve pas pourquoi.
Après logiquement le addEntry se plante sur une entrée invalide

Extrait d'un SIS (CP2061-3.SIS) :

IBM;Tivoli Workload Scheduler;8.5.1 ();CP2061-3;
####################################################
####################################################
####################################################

ton code confirme bien que c'est indéfini : $VAR1 = undef;

17 (edited by nicolas996 2012-07-17 08:56:53)

Re: Scripts personnalisés

ok j'ai réussi c'était bien un probleme dans mon code
Le probleme était les boucle elsif imbriquées alors que moi je voulais parser plusieurs fois la meme ligne

Bref à la fin j'ai ça :
$VAR1 = {
          'PUBLISHER' => 'SYMANTEC',
          'NAME' => 'NetBackup Enterprise Server Client',
          'COMMENTS' => 'CP2185-1',
          'VERSION' => '7.5 ()'
        };

Cependant j'ai remarqué que pour Software.pm (ou mon MySoftware.pm), le champ COMMENTS n'apparait pas dans GLPI.
Est ce normal?

Re: Scripts personnalisés

Il me semble que dans GLPI, il n'y a que l'éditeur, le nom et la version.

Please contact Fusioninventory Partners companies if you look for a FusionInventory on site expert.
→ http://www.fusioninventory.org/partners/

19 (edited by nicolas996 2012-07-18 12:04:15)

Re: Scripts personnalisés

en champ de base mais en vue personalisée on peut voir d'autres champs dont commentaire

Re: Scripts personnalisés

Bonjour,

Je travail sur un Centos 6.5.

J'ai modifié le script perl generic.pm de fusion inventory pour remonter la valeur du SKU number via la le dmidecode.

J'ai donc ajouté une fonction:

sub getSkuNumberFromDemidecode

je l'ai aussi ajouté dans l'export

our @EXPORT = qw(
      getSkuNumberFromDemidecode
);

j'ai redémarré l'agent et relancer un inventraire sur le serveur.

Mais je n'ai pas l'info qui apparait dans GLPI.

Comment faire pour remonter l'info?

Merci pour votre aide.