Bonjour,

Je dois créer un script dont le but est de récupérer les @mac sur un équipement.
Ceci afin de comparer une situation avant et après un instant T.

Rien de complexe en soit, j'ai juste un petit souci lorsqu'il y a plusieurs @mac sur un même port. Je les récupère bien toutes, mais j'ai un souci d'affichage. De formatage plutôt.
J'aimerais avoir ce format de sortie:
slot/port|@mac|vlan

avec @mac correspondant à une liste d'@mac, classée (genre mac1/mac3/mac2)
et vlan une liste de vlan, classée en fonction des @mac. (vlan1/vlan3/vlan2)

J'ai essayé plusieurs méthodes, mais je n'arrive pas au résultat voulu:

METODE 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
$mac[$i] = ($exp->matchlist())[0];
$vlan[$i] = ($exp->matchlist())[1];
@donnees = sort (@mac);
Les @mac sont bien classées, mais je ne peux retrouver facilement le vlan correspondant ensuite.

METHODE 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
$donnees->{$compteur_mac}={'mac'=>($exp->matchlist())[0],
                          'vlan'=>($exp->matchlist())[1]};
me donne un résultat du style:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
$VAR1 = {
          '1' => {
                   'vlan' => '2128',
                   'mac' => 'cc5d-4ec7-4082'
                 },
          '0' => {
                   'vlan' => '97',
                   'mac' => '00c0-8916-d65b'
                 }
        };
Comment classer du coup en fonction des mac?

METHODE 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$donnees[$compteur_mac] = ($exp->matchlist())[0] .
                           "\t".($exp->matchlist())[1];
 
my @lines = map { chomp; [split(/\t/, $_)] } @donnees;
print map {"@$_\n"} sort { $a->[1] <=> $b->[1] } @lines;
Ce résultat me plait le plus pour le moment, il faut juste trouver comment concaténer les mac, puis les vlans ensemble


Auriez vous une idée de comment faire svp?
Merci d'avance,