I’ve found this usefull script on bind-user mailing list, to check NS serial number if they are in the same value.
credit: pyh – at – mail.nsbeta.info
#!/usr/bin/perl use strict; use Net::DNS; use Getopt::Std; my %opts; getopts('hm:s:z:', \%opts); if ($opts{'h'}) { usage(); } my $master = $opts{'m'} || usage(); my $slave = $opts{'s'} || usage(); my $zone = $opts{'z'} || usage(); my $s1 = qrsoa($master,$zone); my $s2 = qrsoa($slave,$zone); if ($s1 != -1 && $s1 == $s2) { print "OK\n"; exit 0; } else { print "CRITICAL: zone $zone sync error\n"; exit 2; } sub qrsoa { my $host = shift; my $zone = shift; my $res = Net::DNS::Resolver->new(nameservers => [$host]); my $query = $res->query($zone, "SOA"); return $query ? ($query->answer)[0]->serial : -1; } sub usage { print <<EOF; Usage: $0 -m 8.8.8.8 -s 8.8.4.4 -z example.com -m master DNS ip or name -s slave DNS ip or name -z zone name -h show this help page EOF exit 0; }
ie:
$ ./nsserial.pl -m ns1.he.net -s ns1.kutukupret.com -z kutukupret.com OK