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/17 21:11]
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;​ 
  
-my $repository = "/​home/​jthomas/​dns/​master/";​ 
-my $dnsData = "​data";​ 
- 
- 
- 
-open (DATA, $dnsData), or die $!; 
-my @dnsLine = <​DATA>;​ 
- 
-foreach my $entry (@dnsLine){ 
- 
- chomp ($entry); 
- my ($hostName, $ipAddress) = split('​ ', $entry); 
- 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 = "​2009081701";​ 
- 
- 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"​){ 
- 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 = " "; 
-    
- } 
-     return $tabs; 
-} 
-</​code>​ 
dns_add_script.txt ยท Last modified: 2020/08/10 02:35 (external edit)