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
Les @mac sont bien classées, mais je ne peux retrouver facilement le vlan correspondant ensuite.
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);
METHODE 2
me donne un résultat du style:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $donnees->{$compteur_mac}={'mac'=>($exp->matchlist())[0], 'vlan'=>($exp->matchlist())[1]};
Comment classer du coup en fonction des mac?
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' } };
METHODE 3
Ce résultat me plait le plus pour le moment, il faut juste trouver comment concaténer les mac, puis les vlans ensemble
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;
Auriez vous une idée de comment faire svp?
Merci d'avance,
Partager