Forums FusionInventory
Agent FusionInventory Windows - Serial Number - 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: Agent FusionInventory Windows - Serial Number (/showthread.php?tid=41)



Agent FusionInventory Windows - Serial Number - azman - 2010-07-29

Bonjour,

Je me suis tourné vers l'agent FusionInventory après avoir testé l'agent OCS suite au conseil d'une personne avisée.

En effet, l'agent OCS ne retourne que Serial number des disques dur dont le champ SerialNumber (Win32_PhysicalMedia) de la WMI Windows est bien renseigné.

Malheureusement, l'agent FusionInventory ne m'aide pas plus car il me semble qu'il utilise lui aussi la WMI...

Avez vous une solution en prévision pour ce problème ?

Cordialement,

Azman


Agent FusionInventory Windows - Serial Number - ddurieux - 2010-07-29

L'agent fusion regarde dans Win32_LogicalDisk la valeur : VolumeSerialNumber

Regardez ce que vous avez dedans

Vous utilisez quel Windows? c'est 32 ou 64 bits?
Après si ce n'est pas dedans c'est que le serial n'est pas enregistré dans le "firmware" du disque dur.


Agent FusionInventory Windows - Serial Number - azman - 2010-07-29

ddurieux Wrote:L'agent fusion regarde dans Win32_LogicalDisk la valeur : VolumeSerialNumber

Regardez ce que vous avez dedans

Vous utilisez quel Windows? c'est 32 ou 64 bits?
Après si ce n'est pas dedans c'est que le serial n'est pas enregistré dans le "firmware" du disque dur.

Bonjour,

Pour ma part, c'est le serialNumber renvoyé par le micrologiciel du HDD dont j'ai besoin, celui qui est normalement renvoyé par la WMI "Win32_PhysicalMedia".

Je pense avoir compris la logique de récupération de cette information:

Dans lib/FusionInventory/Agent/ Task/Inventory/OS/Win32/Storages.pm
Code:
sub getInfo {

13    

    my ($type, $nbr) = @_;

14    

15    

    my $info = {};

16    

17    

    my $device = "/dev/";

18    

    $device .= $type eq 'hd'?'hd':'scd';

19    

    $device .= chr(ord('a')+$nbr);

20    

21    

    foreach (`hdparm -I $device 2>&1`) {

22    

        $info->{model} = $1 if /Model Number:\s+(.*?)\s*$/;

23    

        $info->{firmware} = $1 if /Firmware Revision:\s+(\S*)/;

24    

        $info->{serial} = $1 if /Serial Number:\s+(\S*)/;

25    

        $info->{size} = $1 if /1000:\s+(\d*)\sMBytes\s\(/;

26    

    }

27    

28    

    return $info;

29    

}

30    

31    

32    

sub doInventory {

33    

34    

    my $params = shift;

35    

    my $logger = $params->{logger};

36    

    my $inventory = $params->{inventory};

37    

38    

39    

    my @storages;

40    

    foreach my $Properties (getWmiProperties('Win32_DiskDrive', qw/

41    

        Name Manufacturer Model MediaType InterfaceType FirmwareRevision

42    

        SerialNumber Size SCSILogicialUnit SCSIPort SCSILogicalUnit SCSITargetId

43    

    /)) {

44    

45    

            my $info = {};

46    

47    

            if ($Properties->{Name} =~ /(\d+)$/) {

48    

                $info = getInfo("hd", $1);

49    

            }

50    

51    

            $inventory->addStorage({

52    

                MANUFACTURER => $Properties->{Manufacturer},

53    

                MODEL => $info->{model} || $Properties->{Model},

54    

                DESCRIPTION => $Properties->{Description},

55    

                NAME => $Properties->{Name},

56    

                TYPE => $Properties->{MediaType},

57    

                INTERFACE => $Properties->{InterfaceType},

58    

                FIRMWARE => $info->{firmware} || $Properties->{FirmwareRevision},

59    

                SERIAL => $info->{serial} || $Properties->{SerialNumber},

60    

                DISKSIZE => $info->{size} || int($Properties->{Size}/(1024*1024)),

61    

                SCSI_CHID => $Properties->{SCSILogicialUnit},

62    

                SCSI_COID => $Properties->{SCSIPort},

63    

                SCSI_LUN => $Properties->{SCSILogicalUnit},

64    

                SCSI_UNID => $Properties->{SCSITargetId},

65    

            });

66    

        }


Je ne comprends pas très bien ce test
Code:
if($Properties->{Name} =~ /(\d+)$/)

s'il est concluant, la fonction GetInfo est appelée, celle-ci fait appelle au programme hdparm.exe que j'ai testé sur ma machine et qui fonctionne bien.

ensuite l'info est récupérée soit de la WMI soit de Hdparm

SERIAL => $info->{serial} || $Properties->{SerialNumber}

pourtant, dans mon cas, le champ "Numéro de Série" ne se renseigne pas dans OCS.

De plus, les écrans ne sont pas du tout inventorié avec FusionInventory, problème que je n'avais pas avec l'agent OSC.

PS: j'utilise un OS 32bits

Cordialement,


Agent FusionInventory Windows - Serial Number - ddurieux - 2010-07-29

azman Wrote:pourtant, dans mon cas, le champ "Numéro de Série" ne se renseigne pas dans OCS.

Est-ce qu'il se trouve dans le XML que l'agent génère ? (avec le parametre --local=c:\ par exemple) ?


Agent FusionInventory Windows - Serial Number - azman - 2010-07-29

ddurieux Wrote:
azman Wrote:pourtant, dans mon cas, le champ "Numéro de Série" ne se renseigne pas dans OCS.

Est-ce qu'il se trouve dans le XML que l'agent génère ? (avec le parametre --local=c:\ par exemple) ?

Bien vu,

Le XML généré contient bien l'information !

dans le champ <STORAGES><SERIAL>...

Le problème serait il du coté serveur ?

Cordialement,


Agent FusionInventory Windows - Serial Number - ddurieux - 2010-07-29

Possible, en tout cas ca remonte, après il faudrait voir pouquoi ce n'est pas gérer par le serveur ocs.


Agent FusionInventory Windows - Serial Number - azman - 2010-07-30

Bonjour,

Une idée des fichiers concernés coté serveur, histoire que je regarde ce matin?

Merci pour votre aide.

Cordialement,

Azman


Agent FusionInventory Windows - Serial Number - ddurieux - 2010-07-30

Ca doit être dans les fichiers perl du serveur ocs : dans répertoire_perl/site_perl/Apache/Ocsinventory/Server mais après je ne sais pas du tout quel ficheir exactement Sad


Agent FusionInventory Windows - Serial Number - azman - 2010-07-31

Dans le XML génèré par l'agent le serial number d'un storage utilise le champ SERIAL, alors que coté serveur, les fichiers Map.pm, machine.php et la base de donnée utilise SERIALNUMBER.

Pour ma part, j'ai modifié le fichier storages.pm coté agent...


Agent FusionInventory Windows - Serial Number - goneri - 2010-07-31

Salut Azman Smile

WMI donne des informations fausses. C'est pourquoi, lorsque hdparm est installé, il est utilisé pour identifer le serial du disque dur. hdparm.exe est installé lors de l'installation via l'installeur. J'ai fait la correction sur l'agent pour l'histoire du SERIALNUMBER ( http://github.com/fusinv/fusioninventory-agent/commit/5072e28f67cda644fa12037a608379dfba30e915 )