Hello all,
Here's a perl script i hacked together that generates reverse DNS zone files. Hope someelse will find it as useful as i did
#!/usr/bin/perl -T
#################################################
# #
# Reversedns.pl is a program that generates #
# reverse DNS zonefiles for a given subnet. #
# #
# Copyright (C) 2005, Timothy Makobu #
#
elmakko@gmail.com #
# #
#################################################
use warnings;
use strict;
unless($#ARGV+1 == 1)
{
print "\n\nreversedns.pl generates reverse DNS zonefiles for a given subnet.\n";
print "Usage inthezone.pl [ipblock]\n";
print "Example: inthezone2.pl 10.0.0.0/10\n";
exit 1;
}
my $subnet = $ARGV[0];
unless($subnet =~ m#^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})$#)
{
print "Invalid IP block\n";
exit 1;
}
my $slash = $5;
if($slash < 9)
{
print "Invalid IP block. Bigger than a class A block\n";
exit 1;
}
elsif($slash > 32)
{
print "There's no such thing on IPV4 doode, :-D\n";
exit 1;
}
# Here we go :-)
my $bits = 32 - $slash;
my $reverse_dns = undef;
my $dbits = 0;
my $bitc = 0;
my $decimal = 0;
my $zonenum = 0;
if($bits <= 8)
{
open ZONE,">$1.$2.$3.db" or die $!;
select ZONE;
$dbits = 255;
while($dbits)
{
$reverse_dns = "$dbits.$3.$2.$1.IN-ADDR.ARPA\n";
print $reverse_dns;
$dbits--;
}
close ZONE;
}
elsif($bits <= 16)
{
$bitc = $bits - 8;
$decimal = b2d($bitc);
while($decimal != -1)
{
$zonenum = $decimal+$3;
open ZONE,">$1.$2.$zonenum.db" or die $!;
select ZONE;
$dbits = 255;
while($dbits)
{
$reverse_dns = "$dbits.$zonenum.$2.$1.IN-ADDR.ARPA\n";
print $reverse_dns;
$dbits--;
}
close ZONE;
$decimal--;
}
}
elsif($bits <=24)
{
$bitc = $bits - 16;
$decimal = b2d($bitc);
while($decimal != -1)
{
my $bitscc = 255;
while($bitscc != -1)
{
$zonenum = $decimal+$2;
open ZONE,">$1.$zonenum.$bitscc.db" or die $!;
select ZONE;
$dbits = 255;
while($dbits)
{
$reverse_dns = "$dbits.$bitscc.$zonenum.$1.IN-ADDR.ARPA\n";
print $reverse_dns;
$dbits--;
}
close ZONE;
$bitscc--;
}
$decimal--;
}
}
#+++++++ SUB_ROUTINE(S) +++++++#
sub b2d
{
my $bits = shift;
my %binarytable = (
1=>1,
2=>2,
3=>4,
4=>8,
5=>16,
6=>32,
7=>64,
8=>128);
my $decbits=0;
while($bits)
{
$decbits += $binarytable{$bits};
$bits--;
}
return($decbits);
}
#+++++++++++++++++++++++++++++++++++++++#
exit 0;
# *** EOF *** #