#!/usr/bin/perl
#=====================================================================
# NAME: modifiy_netip.pl
#
# PURPOSE : script remplacant une valeur de sous reseau par une autre
# dans la table de /etc/hosts
# AUTHOR: Jean-Louis BICQUELET
# DATE: 31/03/2009
# VERSION: 1.1  detect commented line beginning by #
# VERSION: 1.0, original file 30/03/2009
# USAGE: modifiy_ip.pl > /etc/newhost
#=====================================================================

#.....................................................................
# lecture du fichier /etc/hosts
#.....................................................................
$name="/etc/hosts";
open(FILE,$name)||die "couldn't open file $!\n";
@hosts=<FILE>;
close FILE;

#.....................................................................
# parcourt de toutes les adresses à la recherche de 172.192.8.x
# pour en faire du 172.214.8.x
#.....................................................................
foreach(@hosts)
{
   # if comment print it 
   if ( /^#(.*)/) { print $_ ; next;}

   # verification de la validite de l'adresse IP
   $host=$_;
   if ($host !~ /^([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)/) {
      print "$string not an IP address\n";
   }
   $notIP = 0;
   foreach $s (($1, $2, $3, $4)) {
      if (0 > $s || $s > 255) {
          $notIP = 1;
           last;
      }
   }
   if ($notIP) { print "\n$string is not a valid IP address\n"; }
   else { 
       # relecture pour avoir la fin de la ligne en 5eme parametre ($5)   
       $host !~ /^([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)(.*)/ ;

       # recherche du sous reseau
          # modifications :
          #
          # *172.192.8.*x doivent être transformées en *172.214.8.*x
          # *172.192.101.*y doivent être transformées en *172.214.101.*y 
          #
          # a venir
          #
          # les réseaux 172.192.6.z en 172.214.6.z et 172.192.7.t en 172.214.7.t 
       if ( ($1==172) && ($2==192) && ($3 == 8)) {
   	  print "$1.214.$3.$4 $5\n"; 
       }  
       if ( ($1==172) && ($2==192) && ($3 == 101)) {
   	  print "$1.214.$3.$4 $5\n"; 
       }  
       if ( ($1==172) && ($2==192) && ($3 == 7)) {
   	  print "$1.214.$3.$4 $5\n"; 
       }  
       if ( ($1==172) && ($2==192) && ($3 == 6)) {
   	  print "$1.214.$3.$4 $5\n"; 
       }  
     
     
       print $host; 
   }
}
