• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Travail sur modèle SNMP Alcatel Omniswitch 6850 et remontée des mac
#26
oui c'est ça, la apparement, ni les infos LLDP, ni les infos de MAC ne sont remontées. Donc la construction du XML par l'agent n'est pas ok Wink
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#27
Eureka comme dirait l'autre...

Mais il me reste un souci quand même :
si je rajoute dans my @mac_dispatch_table et my @ports_dispatch_table les éléments pour Alcatel en appelant le package Nortel que j'ai modifié pour mes essais cela fonctionne.

J'ai tenté de créer le package FusionInventory::Agent::Task::NetInventory::Manufacturer::Alcatel;
Lorsque j'utilise celui-ci dans my @mac_dispatch_table et my @ports_dispatch_table j'ai les erreurs suivantes :
Use of uninitialized value $params{"module"} in concatenation (.) or string at ../agent/FusionInventory/Agent/Tools.pm line 452.
Use of uninitialized value in concatenation (.) or string at ../agent/FusionInventory/Agent/Tools.pm line 452.
Use of uninitialized value $params{"module"} in concatenation (.) or string at ../agent/FusionInventory/Agent/Tools.pm line 461.

Lorsque je modifie le code d'appel sans utiliser my @mac_dispatch_table et my @ports_dispatch_table mais en mettant if (($comments =~ /Service Release/) or ($comments =~ /Alcatel/)) alors traiter alcatel ...
j'ai les erreurs suivantes :
Subroutine setConnectedDevicesMacAddress1 redefined at ../agent/FusionInventory/Agent/Task/NetInventory/Manufacturer/Alcatel.pm line 10.
Subroutine setTrunkPorts1 redefined at ../agent/FusionInventory/Agent/Task/NetInventory/Manufacturer/Alcatel.pm line 55.
Subroutine setConnectedDevices1 redefined at ../agent/FusionInventory/Agent/Task/NetInventory/Manufacturer/Alcatel.pm line 67.

J'atteins un peu mes limites sur perl : voici le code qui fonctionne pour toute la partie Alcatel pour la partie Netinventory (Alcatel.pm)
Peux-tu m'aider à voir comment faire les appels dans Netinventory.pm ?

Code:
package FusionInventory::Agent::Task::NetInventory::Manufacturer::Alcatel;

use strict;
use warnings;

use FusionInventory::Agent::Tools::Network;
use FusionInventory::Agent::SNMP qw(getLastElement getNextToLastElement);


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

    my $results = $params{results};
    my $ports   = $params{ports};
    my $walks   = $params{walks};

    while (my ($oid, $mac) = each %{$results->{dot1dTpFdbAddress}}) {
        next unless $mac;
        
        $mac = alt2canonical($mac);

        my $suffix = $oid;
        $suffix =~ s/$walks->{dot1dTpFdbAddress}->{OID}//;
        my $dot1dTpFdbPort = $walks->{dot1dTpFdbPort}->{OID};

        my $portKey = $dot1dTpFdbPort . $suffix;
        my $ifKey_part = $results->{dot1dTpFdbPort}->{$portKey};
        next unless defined $ifKey_part;

        my $ifKey =
            $walks->{dot1dBasePortIfIndex}->{OID} .  '.' . $ifKey_part;
        next unless defined $ifKey;

        my $ifIndex =
            $results->{dot1dBasePortIfIndex}->{$ifKey};            
        next unless defined $ifIndex;

        my $port = $ports->{$ifIndex};

        # this device has already been processed through CDP/LLDP
        next if $port->{CONNECTIONS}->{CDP};
        # this is port own mac address
        next if $port->{MAC} eq $mac;

        # this is trunk port
        next if $port->{TRUNK};
        
        # create a new connection with this mac address
        push
            @{$port->{CONNECTIONS}->{CONNECTION}},
            { MAC => $mac };
    }    
}

sub setTrunkPorts {
    my (%params) = @_;
    
    my $results = $params{results};
    my $ports   = $params{ports};

    while (my ($oid, $trunk) = each %{$results->{vlanTrunkPortDynamicStatus}}) {
        $ports->{getLastElement($oid)}->{TRUNK} = $trunk ? 1 : 0;    
    }    
}


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

    my $results = $params{results};
    my $ports   = $params{ports};
    my $walks   = $params{walks};
    
    return unless ref $results->{lldpRemChassisId} eq "HASH";
    
    while (my ($number, $chassisname) = each %{$results->{lldpRemChassisId}}) {
        my $short_number = $number;

        $short_number =~ s/$walks->{lldpRemChassisId}->{OID}//;
    
        my @array = split(/\./, $short_number);
    
        my $ifKey_part = $array[2];
        
        my $ifKey =
            $walks->{dot1dBasePortIfIndex}->{OID} .  '.' . $ifKey_part;
        next unless defined $ifKey;
    
        my $ifIndex =
            $results->{dot1dBasePortIfIndex}->{$ifKey};            
        next unless defined $ifIndex;
        
        my $ifKey2 =
            $walks->{lldpRemPortId}->{OID} . $short_number;
        next unless defined $ifKey2;
        
        my $ifNumber =
            $results->{lldpRemPortId}->{$ifKey2};
        next unless defined $ifNumber;
        
        $ports->{$ifIndex}->{CONNECTIONS} = {
            CDP        => 1,
            CONNECTION => {
                IFNUMBER => $ifNumber,
                SYSMAC => alt2canonical($chassisname)
            }
        };        
    }
}

=head1 NAME

FusionInventory::Agent::Task::NetInventory::Manufacturer::Alcatel - Alcatel-specific functions

=head1 DESCRIPTION

This is a class defining some functions specific to Alcatel hardware.

=head1 FUNCTIONS

=head2 setConnectedDevicesMacAddress(%params)

Set mac addresses of connected devices.

=over

=item results raw values collected through SNMP

=item ports device ports list

=item walks model walk branch

=back

=head2 setTrunkPorts(%params)

Set trunk bit on relevant ports.

=over

=item results raw values collected through SNMP

=item ports device ports list

=back

=head2 setConnectedDevices(%params)

Set connected devices, through CDP or LLDP.

=over

=item results raw values collected through SNMP

=item ports device ports list

=item walks model walk branch

=back
  Reply
#28
T'as juste ces 2 ($comments =~ /Service Release/) or ($comments =~ /Alcatel/)) ?

y a rien d'autre que "Service Release" pour détecter que c'est un Alcatel ?
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#29
non entre temps en attendant ta réponse j'ai cherché tous mes sysdescr pour voir si ça couvrait tout et il faut ajouter OS685 (pour les OS6850, 0S6855...) et R01 GA pour certains sysdescr
le reste de mon parc est couvert par alcatel et Service Release

j'attends tes idées pour les erreurs rencontrées sinon je te donnerai aussi mes appels de fonction pour voir si tu peux tout intégrer dans le prochain agent

merci
  Reply
#30
oui oui donne tout, j'intègre et après tu testeras Wink
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#31
David,

juste pour confirmer : as-tu eu mon mail avec l'url de mes sources ?

Stéphane
  Reply
#32
Oui reçu, je dois trouver du temps pour l'intégrer Wink
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#33
ok pas de souci

Je viens de me rendre compte d'un point bizarre que je vais creuser : mes ports ont disparus sur mes coeurs de réseaux et ne se recréent pas : je vais tracer cette partie là...

Stéphane
  Reply
#34
Bon côté coeur j'ai besoin d'aide ...

- mon matériel existe dans l'inventaire réseau avec sa mac de renseignée (testé avec ou sans les ports de créés)

- sur mes switchs terminaux la partie LLDP fonctionne bien lors de l'inventaire snmp : pour chaque port LLDP il me trouve la mac distante (celle du coeur auquel il est rattaché) mais au lieu de mettre à jour le coeur existant il me crée un matériel inconnu (le type n'est pas renseigné) avec tous les ports renseignés et mappés à mes switchs.

- pour tester j'ai supprimé mon existant et j'ai importé en tant que matériel réseau celui créé dans matériel inconnu : là j'ai mes ports renseignés mais pas la partie fusinvSNMP (tableau des ports)
Je relance mon inventaire snmp et là il me recrée de nouveau un matériel inconnu...

Est-ce les règles d'import et liaison qui rentrent en œuvre ? Est-ce parce que mon matériel ne serait pas détecté comme connu ?
Est-ce qu'il me manque une information de renseignée lorsque je fais l'import (genre faut-il renseigner le modèle ou l'authentification snmp ?

Si tu peux m'aider un peu sur ce point ...


Si je pars à l'inverse sur l'inventaire snmp que de mes coeurs de réseau rien ne se met à jour et le serveur ne reçoit aucun xml de l'agent : j'ai fait mes traces comme pour mes switchs mais aucune connexion/port ne remonte ...
Est-ce que cela provient du fait que tous les ports sont trunk et LLDP ? est-ce que dans ce cas cela crée bien les ports ?

Merci de tes réponses...

Stéphane
  Reply
#35
Est-ce les règles d'import et liaison qui rentrent en œuvre ? => Oui

Est-ce parce que mon matériel ne serait pas détecté comme connu ? => non je penses pas, ça doit etre les règles

Est-ce qu'il me manque une information de renseignée lorsque je fais l'import (genre faut-il renseigner le modèle ou l'authentification snmp ? => Normalement il les faut pour que l'agent puisse faire l'inventaire SNMP de ce matériel

Pour ton soucis sur les switch coeur, t'as le XML ?
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#36
Est-ce les règles d'import et liaison qui rentrent en œuvre ? => Oui
Vu que la mac est mon critère d'unicité, j'ai testé de ne laisser que le critère sur la mac mais cela ne fonctionne pas mieux : par contre comme le matériel n'est pas reconnu comme un matos réseau je vais tester de ne laisser qu'un seule règle sur la mac et de désactiver toutes les autres.

Est-ce parce que mon matériel ne serait pas détecté comme connu ? => non je penses pas, ça doit etre les règles

Est-ce qu'il me manque une information de renseignée lorsque je fais l'import (genre faut-il renseigner le modèle ou l'authentification snmp ? => Normalement il les faut pour que l'agent puisse faire l'inventaire SNMP de ce matériel
Ok mais justement là je ne passais pas par le netinventory des coeurs mais par celui des switchs distants : c'est ce netinventory qui crée le matos inconnu (coeurs) avec tous ses ports

Pour ton soucis sur les switch coeur, t'as le XML ?
Le XML disponible dans le plugin FI (ça j'ai) ou le XML créé par l'agent et qui le remonte sur le serveur (ça je n'ai pas...)

Merci
  Reply
#37
Bonjour David,

J'aurai besoin de pouvoir annoncer une planification pour mon inventaire de parc alcatel dans ma boîte.

Peux-tu me dire quand tu prévois de sortir un nouvel agent intégrant mes modifications ? Quelle version d'agent ?

Merci d'avance

PS : je continue de bosser sur les coeurs et sur mon problème de doublons mais déjà si je pouvais avoir l'inventaire de tous les switchs locaux cela me permettra d'avancer mon inventaire PC / switch.

Stéphane
  Reply
#38
Euh vi suis un peu a la bourre, vais faire ca d'ici fin de semaine
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#39
bonjour David,

je viens de télécharger le dernier agent et je m'aperçois que la partie alcatel n'est toujours pas présente ? où alors certains scripts ont changé de fonctionnement ?

peux-tu me confirmer où tu en es de l'intégration des modifs que je t'avais envoyé ?

merci

ddurieux Wrote:Euh vi suis un peu a la bourre, vais faire ca d'ici fin de semaine
  Reply
#40
Bonjour,

Je suis très intéressé par ces ajouts concernant les Alcatel.

Je suis en train de mettre en place Fusion chez mon client mais les collectes SNMP ne récupèrent pas les mac des machines connectés au port, pas plus que les truck, et ne réalise pas les connexions.

J'ai cru comprendre dans ce poste que la contribution de Lotus aller dans ce sens.

Lotus :
penses-tu que ce que tu as fait pourrait marcher avec des Omniswitch 6800 9600 9700 ?

A quoi devrais-je faire attention dans ce que tu as proposé. Quel sont les limites ?
Puis-je apporter ma contribution en testant sur un parc différents du tiens ?

ddurieux :
Je suis impatient d'avoir le travail de Lotus. Cela me serait précieux pour l'inventaire que j'ai a mener.
Dans l’espoir que tu puises nous le mettre à disposition prochainement. Merci.
Ubuntu 14.04
GLPI 0.90.5
FusionInventory 0.90+1.4
FusionInventory Agent Windows x86 ou x64 2.3.18
  Reply
#41
C'est en cours d'intégration + test
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#42
Bonjour,

Je venais aux nouvelles de l'intégration de la partie Alcatel, qui me serait très précieuse dans un projet.

Je peux aider au test si besoin.

Merci d'avance.
Ubuntu 14.04
GLPI 0.90.5
FusionInventory 0.90+1.4
FusionInventory Agent Windows x86 ou x64 2.3.18
  Reply
#43
genohunter Wrote:Bonjour,

Je suis très intéressé par ces ajouts concernant les Alcatel.

Je suis en train de mettre en place Fusion chez mon client mais les collectes SNMP ne récupèrent pas les mac des machines connectés au port, pas plus que les truck, et ne réalise pas les connexions.

J'ai cru comprendre dans ce poste que la contribution de Lotus aller dans ce sens.

Lotus :
penses-tu que ce que tu as fait pourrait marcher avec des Omniswitch 6800 9600 9700 ?

A quoi devrais-je faire attention dans ce que tu as proposé. Quel sont les limites ?
Puis-je apporter ma contribution en testant sur un parc différents du tiens ?

ddurieux :
Je suis impatient d'avoir le travail de Lotus. Cela me serait précieux pour l'inventaire que j'ai a mener.
Dans l’espoir que tu puises nous le mettre à disposition prochainement. Merci.

Bonjour,

concernant les 6800 cela fonctionne comme les 6850 que j'ai :
- découverte des ports trunk/lldp pour la topologie réseau (quel port fibre des 6850 / 6800 est connecté avec quel port fibre des 9700 9600),
- remontée des mac adress et liaison des équipements terminaux PC / Impr / Tél IP Alcatel remontés comme des hub réseaux si le PC est connecté derrière
Pour tout cela : il faudra juste bien déclarer les modèles snmp avec tous les sysdescr
Il faudra donc extraire tous les sysdescr des switchs pour les envoyer à David (David, le mieux est un snmpwalk ?) car certains sysdescr anciens ne contenant pas la chaine Alcatel-Lucent il faut ajouter au code de l'agent du code pour qu'il sache qu'il traite un alcatl lucent

concernant les 9700 c'est là où j'ai un souci pour l'instant : il ne s'agit que de ports trunk / lldp et je n'arrive pas pour l'instant à les faire remonter pour la topologie réseau (mais d'un autre côté la liaison est remontée par l'interrogation des 6850 : il ne me manque donc que le trunk entre les 2 coeurs 9700 redondants)

J'attends d'avoir déjà un inventaire côté switch terminal avant de me replonger dedans. Le 9600 devraient fonctionner de la même façon.

J'attends donc maintenant un retour de David pour continuer à creuser.

bonne fin d'année à tous

Stéphane
  Reply
#44
Merci de ton retour.
Ubuntu 14.04
GLPI 0.90.5
FusionInventory 0.90+1.4
FusionInventory Agent Windows x86 ou x64 2.3.18
  Reply
#45
bonjour David,

désolé de déterrer un topic vieux de 4 ans mais nous venons de migrer de version GLPI et FI (les plus récentes)

Mes adaptations manuelles suite au changement de mode de fonctionnement de FI ne sont plus d'actualité.

Mais de base j'ai presque tout ce qu'il me faut : le seul souci repéré pour l'instant est le suivant :

les ports trunk ne sont pas détectés sur les switch et donc j'ai toutes les mac associées aux ports trunk et pas sur les vrais ports.

Voici une extraction d'un xml : comment et quoi modifier dans les nouvelles versions pour dire que ce sont des ports trunk ?
le 1er contenant 1 seul MAC est un port classique, le second un port fibre d'interconnexion trunk

Merci pour ton aide.

<?xml version="1.0" encoding="UTF-8" ?>
<REQUEST>
<CONTENT>
<DEVICE>
<INFO>
<COMMENTS>Alcatel-Lucent OS6850-P24X 6.4.4.585.R01 Service Release, January 02, 2013.</COMMENTS>
<CONTACT>Alcatel-Lucent, http://alcatel-lucent.com/wps/portal/ent...</CONTACT>
<FIRMWARE>6.4.4.585.R01</FIRMWARE>
<ID>0</ID>
<IPS>
<IP>10.10.250.101</IP>
<IP>127.0.0.1</IP>
</IPS>
<LOCATION>Internat</LOCATION>
<MAC>00:e0:b1:b0:fb:63</MAC>
<MANUFACTURER>Alcatel</MANUFACTURER>
<MODEL>OS6850-P24X</MODEL>
<NAME>SRI</NAME>
<SERIAL>J4380277</SERIAL>
<TYPE>NETWORKING</TYPE>
<UPTIME>55 days, 10:33:41.00</UPTIME>
<VENDOR>Alcatel-Lucent</VENDOR>
</INFO>
<PORTS>
<PORT>
<IFDESCR>Alcatel-Lucent 1/1</IFDESCR>
<IFINERRORS>0</IFINERRORS>
<IFINOCTETS>0</IFINOCTETS>
<IFINTERNALSTATUS>1</IFINTERNALSTATUS>
<IFLASTCHANGE>1 minute, 23.00</IFLASTCHANGE>
<IFMTU>9216</IFMTU>
<IFNAME>1/1</IFNAME>
<IFNUMBER>1001</IFNUMBER>
<IFOUTERRORS>0</IFOUTERRORS>
<IFOUTOCTETS>0</IFOUTOCTETS>
<IFPORTDUPLEX>1</IFPORTDUPLEX>
<IFSPEED>0</IFSPEED>
<IFSTATUS>2</IFSTATUS>
<IFTYPE>6</IFTYPE>
<MAC>00:e0:b1:b0:fb:65</MAC>
<TRUNK>0</TRUNK>
</PORT>
...

<PORT>
<CONNECTIONS>
<CONNECTION>
<MAC>00:00:24:c9:5a:10</MAC>
<MAC>00:00:5e:00:01:01</MAC>
<MAC>00:00:5e:00:01:0a</MAC>
<MAC>00:00:5e:00:01:64</MAC>
<MAC>00:00:5e:00:01:66</MAC>
<MAC>00:00:5e:00:01:6a</MAC>
<MAC>00:00:5e:00:01:0b</MAC>
<MAC>00:00:5e:00:01:75</MAC>
<MAC>00:00:5e:00:01:0c</MAC>
<MAC>00:00:5e:00:01:78</MAC>
<MAC>00:00:5e:00:01:0d</MAC>
<MAC>00:00:5e:00:01:0e</MAC>
<MAC>00:00:5e:00:01:0f</MAC>
<MAC>00:00:5e:00:01:96</MAC>
...
</CONNECTION>
</CONNECTIONS>
<IFALIAS>liaison SRE</IFALIAS>
<IFDESCR>Alcatel-Lucent 1/23</IFDESCR>
<IFINERRORS>0</IFINERRORS>
<IFINOCTETS>3466732007</IFINOCTETS>
<IFINTERNALSTATUS>1</IFINTERNALSTATUS>
<IFLASTCHANGE>8 days, 01:18:52.00</IFLASTCHANGE>
<IFMTU>9216</IFMTU>
<IFNAME>1/23</IFNAME>
<IFNUMBER>1023</IFNUMBER>
<IFOUTERRORS>0</IFOUTERRORS>
<IFOUTOCTETS>4111433833</IFOUTOCTETS>
<IFPORTDUPLEX>3</IFPORTDUPLEX>
<IFSPEED>1000000000</IFSPEED>
<IFSTATUS>1</IFSTATUS>
<IFTYPE>6</IFTYPE>
<MAC>00:e0:b1:b0:fb:7b</MAC>
<TRUNK>0</TRUNK>
</PORT>
...
</DEVICE>
<MODULEVERSION>2.2.1</MODULEVERSION>
<PROCESSNUMBER>1</PROCESSNUMBER>
</CONTENT>
<DEVICEID>foo</DEVICEID>
<QUERY>SNMPQUERY</QUERY>
</REQUEST>
  Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)