# arp -s adres_ip adres_MAC
-------------------------
# arp -s 192.168.0.65 00:50:ba:85:85:ca
-------------------------
#!/usr/bin/perl
#
# gen_ethers.pl <od ip> <do ip>
#

my ($start_1, $start_2, $start_3, $start_4) = split(/\./, $ARGV[0], 4);
my ($end_1, $end_2, $end_3, $end_4) = split(/\./, $ARGV[1], 4); 
my $ARP_CMD="/sbin/arp -n";

for(my $oct_1 = $start_1; $oct_1 <= $end_1 && $oct_1 <= 255; $oct_1++ ){
  for(my $oct_2 = $start_2; $oct_2 <= $end_2 && $oct_2 <= 255; $oct_2++){
    for(my $oct_3 = $start_3; $oct_3 <= $end_3 && $oct_3 <= 255; $oct_3++){
      for(my $oct_4 = $start_4; $oct_4 <= $end_4 && $oct_4 < 255; $oct_4++){
    system("ping -c 1 -W 1 $oct_1.$oct_2.$oct_3.$oct_4 > /dev/null 2>&1");
          my $ether_addr = `$ARP_CMD $oct_1.$oct_2.$oct_3.$oct_4 | 
          egrep 'HWaddress|
(incomplete)' | awk '{print \$3}'`;
    chomp($ether_addr);
    if(length($ether_addr) == 17){
      print("$ether_addr\t$oct_1.$oct_2.$oct_3.$oct_4\n");
    }
      }
    }
  }
}
-------------------------
# ./gen_ethers 192.168.1.1 192.168.1.255 > /etc/ethers
-------------------------
# arp -f /root/arp_entries
