diff -r 5dc44dc86f61 -r de6761ce0d5b zone-ls --- a/zone-ls Tue Dec 21 15:47:40 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -#! /usr/bin/perl - -use strict; -use warnings; -use File::Basename; -use FindBin; - -# liest die Konfiguration ein -my @configs = ( "$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf" ); -my %config; - -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"; -} - -while () { - chomp; - s/#.*//; - s/\t//g; - s/\s//g; - next unless length; - my ( $cname, $ccont ) = split( /\s*=\s*/, $_, 2 ); - $config{$cname} = $ccont; -} -close(CONFIG); - -my $master_dir = $config{master_dir}; -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"; -} - -printf "%-35s %-8s %1s/%1s %3s %7s\n", "Domain", "Status", "ZSK", "KSK", - "Used", "Sig-end"; - -for my $dir ( glob "$master_dir/*" ) { - - $zone = basename($dir); - - # prueft mit dig nach der zone - $info_status = "OK"; - for (`dig \@localhost $zone`) { - if (/root-servers/) { - $info_status = "FAILED"; - last; - } - } - - if ( not -f "$dir/.index.zsk" ) { - $info_zsk = $info_ksk = $info_kc = 0; - $info_end = "-"; - next; - } - - # prueft wie viele zsks genutzt werden - close(FILE); - open( FILE, $_ = "<$dir/.index.zsk" ) or die "Can't open $_: $!\n"; - () = ; - $info_zsk = $.; - - # prueft wie viele ksks genutzt werden - close(FILE); - open( FILE, $_ = "<$dir/.index.ksk" ) or die "Can't open $_: $!\n"; - () = ; - $info_ksk = $.; - - # prueft wie oft die schluessel zum signieren genutzt wurden - open( FILE, $_ = "<$dir/.keycounter" ) or die "Can't open $_: $!\n"; - chomp( $info_kc = ); - - # prueft das ablaufdatum - if ( !-f "$dir/$zone.signed" ) { - $info_end = "-"; - next; - } - - open( FILE, $_ = "<$dir/$zone.signed" ) or die "Can't open $_: $!\n"; - while () { - $info_end = "$+{day}.$+{mon}.$+{year} $+{hour}:$+{min}" - if /RSIG.*SOA.*\s - (?\d\d\d\d) - (?\d\d) - (?\d\d) - (?\d\d) - (?\d\d)\d+\s\(/ix; - } - -} -continue { - printf "%-35s %-8s %1d/%1d %5d %19s\n", $zone, $info_status, $info_zsk, - $info_ksk, $info_kc, - $info_end; -} -