--- a/zone-ls Thu Aug 05 10:49:36 2010 +0200
+++ b/zone-ls Mon Aug 09 11:45:43 2010 +0200
@@ -5,86 +5,94 @@
use File::Basename;
use FindBin;
-
# liest die Konfiguration ein
-my @configs = ("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf");
+my @configs = ( "$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf" );
my %config;
-for (grep {-f} @configs) {
- open(CONFIG, $_) or die "Can't open $_: $!\n";
+for ( grep {-f} @configs ) {
+ open( CONFIG, $_ ) or die "Can't open $_: $!\n";
}
-unless (seek(CONFIG,0 ,0 )) {
- die "Can't open config (searched: @configs)\n"
+unless ( seek( CONFIG, 0, 0 ) ) {
+ die "Can't open config (searched: @configs)\n";
}
while (<CONFIG>) {
- chomp;
- s/#.*//;
- s/\t//g;
- s/\s//g;
- next unless length;
- my ($cname, $ccont) = split (/\s*=\s*/, $_,2);
- $config{$cname} = $ccont;
+ chomp;
+ s/#.*//;
+ s/\t//g;
+ s/\s//g;
+ next unless length;
+ my ( $cname, $ccont ) = split( /\s*=\s*/, $_, 2 );
+ $config{$cname} = $ccont;
}
-close (CONFIG);
-
+close(CONFIG);
my $master_dir = $config{master_dir};
-my $zone;
-my ($info_zsk, $info_ksk, $info_kc, $info_end);
+my $zone;
+my ( $info_zsk, $info_ksk, $info_kc, $info_end, $info_status );
-unless (-d $master_dir and -r $master_dir) {
- die "$master_dir: $!\n";
+unless ( -d $master_dir and -r $master_dir ) {
+ die "$master_dir: $!\n";
}
-
-printf "%-25s %1s/%1s %3s %7s\n", "Domain", "ZSK", "KSK", "Used", "Sig-end";
+printf "%-25s %-8s %1s/%1s %3s %7s\n", "Domain", "Status", "ZSK", "KSK", "Used", "Sig-end";
-foreach my $dir (glob "$master_dir/*") {
-
- $zone = basename($dir);
+for my $dir ( glob "$master_dir/*" ) {
+
+ $zone = basename($dir);
- if (not -f "$dir/.index.zsk") {
- $info_zsk = $info_ksk = $info_kc = 0;
- $info_end = "-";
- next;
+ # prueft mit dig nach der zone
+ $info_status = "OK";
+ for (`dig \@localhost $zone`) {
+ if (/root-servers/) {
+ $info_status = "FAILD";
+ last;
}
+ }
- # prueft wie viele zsks genutzt werden
- close(FILE);
- open(FILE, $_ = "<$dir/.index.zsk") or die "Can't open $_: $!\n";
- () = <FILE>;
- $info_zsk = $.;
+ if ( not -f "$dir/.index.zsk" ) {
+ $info_zsk = $info_ksk = $info_kc = 0;
+ $info_end = "-";
+ next;
+ }
- # prueft wie viele ksks genutzt werden
- close(FILE);
- open(FILE, $_ = "<$dir/.index.ksk") or die "Can't open $_: $!\n";
- () = <FILE>;
- $info_ksk = $.;
+ # prueft wie viele zsks genutzt werden
+ close(FILE);
+ open( FILE, $_ = "<$dir/.index.zsk" ) or die "Can't open $_: $!\n";
+ () = <FILE>;
+ $info_zsk = $.;
- # prueft wie oft die schluessel zum signieren genutzt wurden
- open(FILE, $_ = "<$dir/.keycounter") or die "Can't open $_: $!\n";
- chomp ($info_kc = <FILE>);
+ # prueft wie viele ksks genutzt werden
+ close(FILE);
+ open( FILE, $_ = "<$dir/.index.ksk" ) or die "Can't open $_: $!\n";
+ () = <FILE>;
+ $info_ksk = $.;
- # prueft das ablaufdatum
- if (!-f "$dir/$zone.signed") {
- $info_end = "-";
- next;
- }
-
- open(FILE, $_ = "<$dir/$zone.signed") or die "Can't open $_: $!\n";
- while (<FILE>) {
- $info_end = "$+{day}.$+{mon}.$+{year} $+{hour}:$+{min}"
- if /RSIG.*SOA.*\s
+ # prueft wie oft die schluessel zum signieren genutzt wurden
+ open( FILE, $_ = "<$dir/.keycounter" ) or die "Can't open $_: $!\n";
+ chomp( $info_kc = <FILE> );
+
+ # prueft das ablaufdatum
+ if ( !-f "$dir/$zone.signed" ) {
+ $info_end = "-";
+ next;
+ }
+
+ open( FILE, $_ = "<$dir/$zone.signed" ) or die "Can't open $_: $!\n";
+ while (<FILE>) {
+ $info_end = "$+{day}.$+{mon}.$+{year} $+{hour}:$+{min}"
+ if /RSIG.*SOA.*\s
(?<year>\d\d\d\d)
(?<mon>\d\d)
(?<day>\d\d)
(?<hour>\d\d)
(?<min>\d\d)\d+\s\(/ix;
- }
+ }
-} continue {
- printf "%-25s %1d/%1d %5d %19s\n", $zone, $info_zsk, $info_ksk, $info_kc, $info_end;
+}
+continue {
+ printf "%-25s %-8s %1d/%1d %5d %19s\n", $zone, $info_status, $info_zsk, $info_ksk, $info_kc,
+ $info_end;
}