User Tools

Site Tools


dns_add_script

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dns_add_script [2009/08/18 21:55]
jt
dns_add_script [2020/08/10 02:35]
Line 1: Line 1:
-<code perl> 
-#​!/​usr/​bin/​perl -w 
-##Jason Thomas 
-use strict; 
-use lib '/​home/​jthomas/​lib/​perl5/​site_perl/​5.8.8/';​ 
-use File::Copy; 
-use IO::File; 
-use Text::​Template;​ 
-use File::Grep qw( fgrep ); 
  
- 
-my $repository = "/​home/​jthomas/​projects/​dns/​master/";​ 
-my $dnsData = "​data";​ 
- 
- 
- 
-open (DATA, $dnsData), or die $!; 
-my @dnsLine = <​DATA>;​ 
- 
-foreach my $entry (@dnsLine){ 
- 
- chomp ($entry); 
- my ($hostName, $ipAddress) = split('​ ', $entry); 
-## if (  !defined($ipAddress) ) {print "​$hostName has no IP Address\n";​ exit 0;} 
- my ($domainName,​ $subDomain) = findDomainName($hostName);​ 
- my $dbZoneFile = checkZoneExist($domainName,​ $subDomain, $ipAddress);​ 
- addToZone($dbZoneFile,​ $subDomain, $ipAddress);​ 
-} 
- 
-close (DATA); 
-exit (0); 
- 
-sub findDomainName{ 
- 
- my ($hostName) = @_; 
- my $domainName;​ 
- my $subDomain; 
- my $size; 
- my $counter; 
- my @tmp; 
- 
- @tmp = split('​\.',​ $hostName); 
- $size = @tmp - 2;  
- 
- if ( @tmp == 2){ 
- 
- return ($hostName, undef); 
- } 
-  
- else{ 
-  
- $domainName = "​$tmp[@tmp-2].$tmp[@tmp-1]";​ 
- 
- for ($counter = 0; $counter < $size; $counter++){ 
- 
- if ( ! defined($subDomain) ){ 
- $subDomain=$tmp[$counter];​ 
-  
- } 
- else{ 
- $subDomain="​$subDomain.$tmp[$counter]";​ 
-  
- } 
- } 
- return ($domainName,​ $subDomain);​ 
- } 
-} 
- 
-sub checkZoneExist{ 
- 
- my ($domainName,​ $subDomain, $ipAddress) = @_; 
- my $dbZoneFile = "​db.$domainName";​ 
- my $userName = "​jthomas";​ 
- my $soa = "​2009081801";​ 
- 
- if ( -e $repository.$dbZoneFile ){ 
- ## print "File Exists!";​  
- } 
-  
- else{ 
- my ($tabs) = tabLength($domainName."​."​);​ 
- makeZone("​customArecord.tmpl",​ $dbZoneFile, ​ {soa => \$soa, userName => \$userName, domain => \"​$domainName.",​ tabs => \$tabs, CUSTOMIP => $ipAddress }); 
- } 
-  
- return $dbZoneFile;​ 
-} 
- 
- 
- 
-sub makeZone{ 
-  
- my ($templateSource,​$dbZoneFile,​ $fillInHash) = @_; 
- my $template = Text::​Template->​new(SOURCE => $templateSource) or die "​Couldn'​t construct template: $Text::​Template::​ERROR";​ 
- my $result = $template->​fill_in(HASH => $fillInHash);​ 
-  
- open(DBFILE,​ ">​$repository/​$dbZoneFile"​) , or die $! ; 
- print DBFILE $result; ​ 
- close (DBFILE); 
-  
- print "​\[Info\] Zone file $dbZoneFile created.\n";​ 
- 
-} 
- 
-sub addToZone{ 
-  
-  
- my ($dbZoneFile, ​ $subDomain, $ipAddress) = @_ ;  
-  
- if ( defined($subDomain) && ​ $subDomain ne "​www"​){ 
-  
- if ( fgrep {/​^$subDomain\t/​} $repository.$dbZoneFile ){ 
-  
- print "​Record $subDomain is already in $dbZoneFile \n"; 
- } 
-  
- else { 
- my ($tabs) = tabLength($subDomain);​ 
- open(DBFILE,​ ">>​$repository/​$dbZoneFile"​) , or die $!; 
- print DBFILE "​$subDomain$tabs"​."​IN\tA\t$ipAddress\n";​ 
- close (DBFILE); 
- } 
- }  
-} 
- 
-sub tabLength{ 
-  
- my ($word) = @_;  
- my $tabs = "​\t"​ x (((32 - length($word) + 6) / 8)); 
- if (length($tabs) == 0){ 
- $tabs = "​\t";​ 
- } 
- return $tabs; 
-} 
-  
-###########################################################################​ 
-# Help, info and correctional information. 
-###########################################################################​ 
-sub subUsage { 
- 
-    print "​\nUsage:​ addZone.pl \[-Dn?\] <​username>​ <​hostname>​ <​ipaddress>​\n";​ 
-    print " ​      ​newZone.pl <​username>​ <​domain>​ <IP address>​\n";​ 
-    print "​addZone will create a new zone file, based on domain name. It will also add a new zone to the\n";​ 
-    print "list of zones governed by named-zones.conf. This file will be created and sent, if needed, by dnsPush.\n";​ 
-    print "Only use this to add a new zone and make sure you have the correct type (virtual, www or blank).\n\n";​ 
-    print "​-D ​         Show debug information while running.\n";​ 
-    print "​-n ​         Dryrun mode, make no changes, displays final zone file on screen.\n";​ 
-    print "​-? ​         Help page, displays this page.\n\n";​ 
-    exit(0); 
-} 
-  
-</​code>​ 
dns_add_script.txt ยท Last modified: 2020/08/10 02:35 (external edit)