(An abridged guide)
Version 1.1
This information and these programs are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Use at your own risk.
# THIS REPLICATES DATA FILE FROM NS1 TO NS2 AUTOMATICALLY
remote: data.cdb
scp data.cdb ns2.domain.com:/etc/tinydns/root/data.cdb.tmp
ssh ns2.domain.com mv /etc/tinydns/root/data.cdb.tmp /etc/tinydns/root/data.cdb
data.cdb: data
# cat dynip.data >> data
# The above line is part of a dynamic dns implementation, ignore
/usr/local/bin/tinydns-data
http://x42.com/software/valtz/
#!/bin/sh
cd /service/tinydns/root/
DATE=`date +%Y%m%d-%H%M%S` ## FULL DATE and TIME
cp data backup_data/data_bak_$DATE
VERIFY=`./valtz "zones/*" 2>&1`
if [ "$VERIFY" != "" ]
then
echo ""
echo "*************** ERRORS FOUND ******************"
echo "$VERIFY"
echo "*************** ERRORS FOUND ******************"
echo ""
exit 1
fi
echo "Passed verify"
cat << EOF > data
##
## DO NOT EDIT THIS FILE: It is automatically generated
##
## by the individual zone files in the 'zones' directory.
##
## Written on: $DATE
##
EOF
sort -dui zones/* >> data
# -d defines sort order, -u removes duplicate lines, -i restricts
# the logic to only base ascii characters. Leaving out -i
# means wildcards +*.domain.com and +domain.com are equal
# and sort will remove one of them. Bad.
echo "------------------------------------------------------------"
echo "data now contains up-to-date zone info in tinydns format."
echo "run 'make' to start using this data and update the secondary."
echo "------------------------------------------------------------"
echo ""
#!/usr/local/bin/perl
undef $cmd;
@authoritative = ('ns1.secure.net');
$infile = 'domainlist';
open(IN,"$infile");
@data = ;
close (IN);
foreach $domain (@data) {
$found = 0;
chomp($domain);
$domain = lc($domain);
foreach $ns (@authoritative) {
print "Looking for $domain at $ns... ";
# capture STDERR into STDOUT (2>&1)
$cmd = `tcpclient $ns 53 axfr-get $domain zones/$domain zones/$domain.tmp 2>&1`;
if (-f "zones/$domain") {
print "Found! \n";
$found = 1;
push (@found, $domain);
last;
}
if (!$found) {
print "ERROR \n";
push (@errors, $domain);
}
}
}
open(OUT, ">axfr_log");
print OUT "-------------------- \n Summary: Found these domains:\n";
$x=0;
foreach $item (@found) {
print OUT "$item\n"; $x++;
}
print "Found $x domains OK\n";
print OUT "-------------------- \n Summary: ERRORS on these domains:\n";
$x=0;
foreach $item (@errors) {
print OUT "$item\n"; $x++;
}
print "ERRORS on $x domains\n\n";
close(OUT);
/usr/local/bin/dnscache /usr/local/bin/dnscache-conf /usr/local/bin/dnsfilter /usr/local/bin/dnsip /usr/local/bin/dnsipq /usr/local/bin/dnsmx /usr/local/bin/dnsname /usr/local/bin/dnsq /usr/local/bin/dnsqr /usr/local/bin/dnstrace /usr/local/bin/dnstracesort /usr/local/bin/dnstxt /usr/local/bin/resolveip
tcpclient ns1.domain.com 53 axfr-get example.com zones/example.com zones/example.com.tmp
Version 1.1 of this document was created by Darien Kruss <darien [at] teamipc.com> on June 24, 2004.
Version 1.2 of this document included the -i flag to sort on July 28, 2004.