#!/usr/bin/perl open(INPUT_FILE,"arpresolv.txt") || die "Cannot open file clients\n"; # Create a file handler. my @all_lines=; # Save the array input_file_contents . close(INPUT_FILE); # Close the file handler my @output=(); foreach $int (@all_lines) { my @temp = split(/\s+/,$int); my $mac=$temp[1]; chomp($mac); my @temp1= split(/\./,$mac); $newmac=""; foreach $int (@temp1) { $newmac=$newmac.$int; } my @temp2= split(//,$newmac); my $outmac=$temp2[0].$temp2[1].":".$temp2[2].$temp2[3].":".$temp2[4].$temp2[5].":".$temp2[6].$temp2[7].":".$temp2[8].$temp2[9].":".$temp2[10].$temp2[11]; my $out = $temp[0]." ".$outmac; push(@output,$out); } my $cards; my $ips; print "looking up OIDs."; foreach $int (@output) { chomp; my $addr = $int; my $ip = $int; $addr =~ s/.* ([\d\w]+:[\d\w]+:[\d\w]+):.*/$1/; $addr =~ s/\b([\d\w])\b/0$1/g; $addr =~ s/:/-/g; next unless $addr =~ /..-..-../; $ip =~ s/.*?(\d+\.\d+\.\d+\.\d+).*/$1/; $cards{$addr}||=`curl -sd 'x=$addr' http://standards.ieee.org/cgi-bin/ouisearch`; ($cards{$addr} =~ /Sorry!/) && ($cards{$addr} = "unknown OUI: $addr"); $ips{$ip} = $addr; } print "\n"; for(keys(%ips)) { $cards{$ips{$_}} =~ s/.*.hex.\s+([\w\s\,\.]+)\n.*/$1/s; my $temp = $cards{$ips{$_}}; my $result=grep(/DOCTYPE/,$temp); if ($result) { # The IP is unresolved print "$_ -> Unknown OUI\n"; } else { print "$_ -> $cards{$ips{$_}}\n"; } }