zone-ls
changeset 23 9dc00aa49452
parent 22 7229d1c95ea8
child 25 c02caf4e0eb6
equal deleted inserted replaced
22:7229d1c95ea8 23:9dc00aa49452
     1 #!/usr/bin/perl
     1 #! /usr/bin/perl
     2 
     2 
     3 use strict;
     3 use strict;
       
     4 use warnings;
       
     5 use File::Basename;
     4 
     6 
     5 my %config;
     7 my %config;
     6 open (CONFIG, "dnstools.conf");
     8 open (CONFIG, $_ = "<dnstools.conf") or die "Can't open $_: $!\n";
       
     9 
     7 while (<CONFIG>) {
    10 while (<CONFIG>) {
     8         chomp;
    11         chomp;
     9         s/#.*//;
    12         s/#.*//;
    10         s/\t//g;
    13         s/\t//g;
    11         s/\s//g;
    14         s/\s//g;
    16 }
    19 }
    17 close (CONFIG);
    20 close (CONFIG);
    18 
    21 
    19 my $master_dir = $config{master_dir};
    22 my $master_dir = $config{master_dir};
    20 
    23 
       
    24 die "$config{master_dir}: $!\n" 
       
    25 	if not -d $config{master_dir} or not -r $config{master_dir};
       
    26 
    21 printf "%-25s %1s/%1s %3s %7s\n", "Domain", "ZSK", "KSK", "Used", "Sig-end";
    27 printf "%-25s %1s/%1s %3s %7s\n", "Domain", "ZSK", "KSK", "Used", "Sig-end";
    22 for (<$master_dir/*>) {
       
    23 	s#($master_dir/)(.*)#$2#;
       
    24 	my $zone = $_;
       
    25 
    28 
    26 	my $info_zsk;
    29 my $zone; 
    27 	my $info_ksk;
    30 my ($info_zsk, $info_ksk, $info_kc, $info_end);
    28 	my $info_kc;
       
    29 	my $info_end;
       
    30 	my @temp;
       
    31 
    31 
    32 	#prueft wie viele zsks genutzt werden
    32 foreach my $dir (glob "$master_dir/*") {
    33 	open(FILE, "$master_dir/$zone/.index.zsk");
    33 	
    34 	@temp = <FILE>;
    34 	$zone = basename($dir);
    35 	close(FILE);
       
    36 	$info_zsk = @temp;
       
    37 
    35 
    38 	#prueft wie viele ksks genutzt werden
    36 	if (not -f "$dir/.index.zsk") {
    39 	open(FILE, "$master_dir/$zone/.index.ksk");
    37 		$info_zsk = $info_ksk = $info_kc = 0;
    40 	@temp = <FILE>;
    38 		$info_end = "-";
    41 	close(FILE);
    39 		next;
    42 	$info_ksk = @temp;
       
    43 
       
    44 	#prueft wie oft die schluessel zum signieren genutzt wurden
       
    45 	if (-e "$master_dir/$zone/.keycounter") {
       
    46 		open(FILE, "$master_dir/$zone/.keycounter");
       
    47 		chomp ($info_kc = <FILE>);
       
    48 		close(FILE);
       
    49 	} else {
       
    50 		$info_kc = "-";
       
    51 	}
    40 	}
    52 
    41 
    53 	#prueft das ablaufdatum
    42 	# prueft wie viele zsks genutzt werden
    54 	if (-e "$master_dir/$zone/$zone.signed") {
    43 	close(FILE);
    55 		open(FILE, "$master_dir/$zone/$zone.signed");
    44 	open(FILE, $_ = "<$dir/.index.zsk") or die "Can't open $_: $!\n";
    56 		@temp = <FILE>;
    45 	() = <FILE>;
    57 		close (FILE);
    46 	$info_zsk = $.;
    58 
    47 
    59 		for (@temp) {
    48 	# prueft wie viele ksks genutzt werden
    60 			if (m/RSIG.*SOA.*\s(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)\d+\s\(/i) {
    49 	close(FILE);
    61 			$info_end = "$3.$2.$1 $4:$5";
    50 	open(FILE, $_ = "<$dir/.index.ksk") or die "Can't open $_: $!\n";
    62 			}	
    51 	() = <FILE>;
    63 		}
    52 	$info_ksk = $.;
    64 
    53 
    65 	} else {
    54 	# prueft wie oft die schluessel zum signieren genutzt wurden
       
    55 	open(FILE, $_ = "<$dir/.keycounter") or die "Can't open $_: $!\n";
       
    56 	chomp ($info_kc = <FILE>);
       
    57 
       
    58 	# prueft das ablaufdatum
       
    59 	if (!-f "$dir/$zone.signed") {
    66 		$info_end = "-";
    60 		$info_end = "-";
       
    61 		next;
    67 	}
    62 	}
    68 	
    63 	
    69 	printf "%-25s %1s/%1s %5s %19s\n", $zone, $info_zsk, $info_ksk, $info_kc, $info_end;
    64 	open(FILE, $_ = "<$dir/$zone.signed") or die "Can't open $_: $!\n";
       
    65 	while (<FILE>) {
       
    66 		$info_end = "$+{day}.$+{mon}.$+{year} $+{hour}:$+{min}"
       
    67 		if /RSIG.*SOA.*\s
       
    68 			(?<year>\d\d\d\d)
       
    69 			(?<mon>\d\d)
       
    70 			(?<day>\d\d)
       
    71 			(?<hour>\d\d)
       
    72 			(?<min>\d\d)\d+\s\(/ix;
       
    73 	}
       
    74 
       
    75 } continue {
       
    76 	printf "%-25s %1d/%1d %5d %19s\n", $zone, $info_zsk, $info_ksk, $info_kc, $info_end;
    70 }
    77 }
    71 
    78