#!/usr/bin/perl use Net::IP qw(:PROC); if ( $#ARGV != 0 ) { print STDERR "Usage:\n"; print STDERR "\t$0 10.1.2.0/24\n"; print STDERR "\t$0 '10.1.2.0 - 10.1.2.255'\n"; print STDERR "\t$0 '10.1.2.0 + 255'\n"; print STDERR "\t$0 dead:beef::/32\n"; exit(1); } my $ip = new Net::IP(@ARGV[0]) or die (Net::IP::Error()); if ( $ip->version() != 4) { die "I lied, I only support IPv4\n"; } print STDERR ("IP : ".$ip->ip()."\n"); #print STDERR ("Short : ".$ip->short()."\n"); #print STDERR ("Int : ".$ip->intip()."\n"); print STDERR ("Mask : ".$ip->mask()."\n"); print STDERR ("Last : ".$ip->last_ip()."\n"); #print STDERR ("Len : ".$ip->prefixlen()."\n"); #print STDERR ("Size: ".$ip->size()."\n"); #print STDERR ("Type: ".$ip->iptype()."\n"); print STDERR ("Reverse : ".$ip->reverse_ip()."\n"); #print STDERR ("Binary : ".$ip->binip()."\n"); $gateway=($ip+1)->ip(); $mainip=($ip+2)->ip(); $netmask=$ip->mask(); $network=$ip->ip(); $alias_start=($ip+3)->ip(); $size=$ip->size(); my $a=ip_bintoip(ip_inttobin($ip->last_int()-1, $ip->version), $ip->version); $ip->set($a, $ip->version) or die (Net::IP::Error()); $alias_end=$ip->ip(); ## TODO: check if the range is too small to have aliases ## /etc/sysconfig/network-scripts/ifcfg-eth0 open IFCFG, "> ifcfg-eth0" or die "Can't open ifcfg-eth0: $!"; print IFCFG < ifcfg-eth0-range0" or die "Can't open ifcfg-eth0-range0: $!"; print IFCFG <