X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=update_dns_serial;h=9a23f89496d95a439809c0d50299f5230d2de50f;hb=3d5241a316e3ff729b19b878b0841558120f75e9;hp=93a2b8580e6db4a0904dc482684e5711852b6456;hpb=91c7300e3fc1057404424f8a4bdd5ade18d78d3a;p=bin.git diff --git a/update_dns_serial b/update_dns_serial index 93a2b85..9a23f89 100755 --- a/update_dns_serial +++ b/update_dns_serial @@ -7,16 +7,21 @@ use IO::File; use POSIX qw(strftime); for my $file (@ARGV) { - my $fh = IO::File->new($file,'r'); - my $fh_new = IO::File->new($file.".new",'w'); + my $fh = IO::File->new($file,'r') or die "Unable to open $file for reading: $!"; + my $fh_new = IO::File->new($file.".new",'w') or die "Unable to open ${file}.new for writing: $!"; local $/; my $fh_contents = <$fh>; # rip out old serial my ($old_serial) = $fh_contents =~ /IN\s+SOA\s+\S+\s+\S+\s*(?:\s*\;.+\n)*\((?:\s*\;.+\n)*\s*(\d+)/; - my ($ymd,$iter) = $old_serial =~ /(\d{4}\d{2}\d{2})(\d{2})/; + if (not defined $old_serial) { + print STDERR "problem dealing with $file\n"; + unlink("${file}.new") or die "Unable to unlink ${file}.new: $!"; + next; + } + my ($ymd,$iter) = $old_serial =~ /(\d{4}\d{2}\d{2})(\d{1,2})/; my $new_serial = strftime("%Y%m%d",gmtime())."01"; if ($ymd eq strftime("%Y%m%d",gmtime())) { - $new_serial = $ymd.($iter+1); + $new_serial = $ymd.sprintf('%02d',$iter+1); } $fh_contents =~ s/(IN\s+SOA\s+\S+\s+\S+\s*(?:\s*\;.+\n)*\((?:\s*\;.+\n)*\s*)(\d+)/${1}${new_serial}/; print {$fh_new} $fh_contents;