#!/usr/bin/perl use strict; use File::Copy; my $storepath = './'; my $routers_list = $storepath.'ip.txt'; my $H1; my $i; my $dumplog = './dump_mac.log'; my @array; sub trim($) { $_[0]=~s/(^\s+)|(\s+$)|(\n$)//gs; return $_[0]; }; open (RL, $routers_list) or die "can't open routers list: $!"; $i=0; undef @array; while(){ my $ip= $_; trim($ip); if ($ip =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { $H1=""; open DATA,"/usr/local/bin/snmpwalk -Osf -c COMMUNITY -v 1 $ip .1.3.6.1.2.1.2.2.1.6|"; while (){ $H1=(split(/[.\s]/), $_)[11,14]; trim($_); if (!(grep $_ eq $H1, @array ) && ($H1 ne '0:0:0:0:0:0')){ $i = $i + 1; print "$i - $ip - $H1\n"; open (RW," >>$dumplog") or die "can't open dumplog: $!"; print(RW "$ip;$H1\n"); push @array, $H1; } } } } close(RL);