remove interface
[dell-switch] / filter_neighbours
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4 use autodie;
5
6 use Data::Dump qw(dump);
7
8 $|=1; # flush stdout
9
10 my $debug = $ENV{DEBUG} || 0;
11
12 my %neighbours;
13 open(my $n_fh, '<', '/dev/shm/neighbors.tab');
14 while(<$n_fh>) {
15         chomp;
16         my @v = split(/\t/,$_);
17         my ($sw,$port) = @v;
18         $port =~ s{,bridge.*}{}; # remove interface
19         $port =~ s{\D+}{};
20         $neighbours{$sw}{$port} = \@v;
21 }
22
23 warn "# neighbours = ", dump( \%neighbours );
24
25 sub sw_port {
26         my ( $sw, $port, $rest ) = @_;
27         my $port_o = $port;
28         $port =~ s{\D+}{};
29         if ( exists $neighbours{$sw} ) {
30                 if ( exists $neighbours{$sw}{$port} ) {
31                         #warn "# sw_port $sw $port ",dump( $neighbours{$sw}{$port} );
32                         my $v = $neighbours{$sw}{$port};
33                         return "$sw $port_o $rest >>>> $v->[4] $v->[3]";
34                 }
35         }
36         return "$sw $port_o $rest";
37 }
38
39 while(<>) {
40         s/(sw-\S+) (\S+) (.+)/sw_port($1,$2,$3)/ge;
41         print;
42 }