remove interface
[dell-switch] / filter_mac_add_hostname
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 @name_mac_files = ( qw( /dev/shm/sw-name-mac /dev/shm/wap-name-mac ), $ENV{NAME_MAC}, glob '/dev/shm/name-mac*' );
13 my $mac2name;
14
15 foreach my $name_mac ( @name_mac_files ) {
16         next unless -e $name_mac;
17         open(my $f, '<'. $name_mac);
18         my $count = 0;
19         while(<$f>) {
20                 chomp;
21                 #my ( $ip, $name, $mac ) = split(/ /,$_);
22                 my ( $name, $mac ) = split(/ /,$_);
23                 $mac = lc($mac);
24                 $mac2name->{$mac} = $name;
25                 $count++;
26         }
27         warn "## $name_mac $count";
28 }
29
30 sub mac2name {
31         my ( $mac, $name ) = @_;
32
33         $mac = lc($mac);
34         if ( exists $mac2name->{$mac} ) {
35                 my $mac_name = $mac2name->{$mac};
36                 warn "ERROR: name different $name != $mac_name" if $name && $name ne $mac_name;
37                 #return ( $mac, $mac_name );
38                 return $mac . ' ' . $mac_name;
39         }
40         #return ( $mac, $name );
41         return $mac;
42 }
43
44 warn "# mac2name = ",dump($mac2name) if $debug;
45
46 sub fix_mac {
47         my $mac = shift;
48         $mac = lc($mac);
49         $mac =~ s/^([0-9a-f]):/0$1:/;
50         while ( $mac =~ s/:([0-9a-f]):/:0$1:/g ) {};
51         $mac =~ s/:([0-9a-f])$/:0$1/;
52 #       warn "# $mac\n";
53         return $mac;
54 }
55
56 while(<>) {
57         s/((:?[0-9A-Fa-f]{2}[:-]){5}(:?[0-9A-Fa-f]{2}))/mac2name($1)/ge;
58         print;
59 }