Forums FusionInventory
Scripts personnalisés - Printable Version

+- Forums FusionInventory (https://forum.fusioninventory.org)
+-- Forum: Français (https://forum.fusioninventory.org/forumdisplay.php?fid=4)
+--- Forum: fusioninventory-agent (https://forum.fusioninventory.org/forumdisplay.php?fid=9)
+--- Thread: Scripts personnalisés (/showthread.php?tid=501)



Scripts personnalisés - tilb - 2011-07-13

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.php/Admin_center:Windows_Scripting

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

Par avance merci,

Cdt.


Scripts personnalisés - goneri - 2011-07-13

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 ?


Scripts personnalisés - tilb - 2011-07-13

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.


Scripts personnalisés - goneri - 2011-07-13

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.

Code:
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;



Scripts personnalisés - tilb - 2011-07-13

Merci pour votre réponse rapide.

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

Cdt.


Scripts personnalisés - goneri - 2011-07-13

Super Big Grin


Scripts personnalisés - 4lex11s - 2011-07-25

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 :
Code:
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


Scripts personnalisés - ddurieux - 2011-07-25

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


Scripts personnalisés - goneri - 2011-07-26

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


Scripts personnalisés - axil_76 - 2011-11-16

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

[Image: image46xm.th.jpg]
[Image: 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 ?


Scripts personnalisés - nicolas996 - 2012-07-13

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?


Scripts personnalisés - goneri - 2012-07-13

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


Scripts personnalisés - nabil - 2012-07-13

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.


Scripts personnalisés - nicolas996 - 2012-07-13

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...

Code:
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;



Scripts personnalisés - goneri - 2012-07-13

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:Big Grinumper:
print Dumper($software);

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


Scripts personnalisés - nicolas996 - 2012-07-16

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) :
Code:
IBM;Tivoli Workload Scheduler;8.5.1 ();CP2061-3;
####################################################
####################################################
####################################################

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


Scripts personnalisés - nicolas996 - 2012-07-17

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?


Scripts personnalisés - goneri - 2012-07-18

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


Scripts personnalisés - nicolas996 - 2012-07-18

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


Scripts personnalisés - rosin.nicolas - 2018-08-21

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.