2 |
|
|
3 |
use strict; |
use strict; |
4 |
|
|
5 |
my $bind9_dump = shift @_ || "/var/log/named/stats.dump"; |
my $log = shift @ARGV || "/var/log/stats.dump"; |
6 |
my $rndc = shift @_ || "/usr/local/sbin/rndc"; |
my $rndc = shift @ARGV || "/usr/sbin/rndc"; |
7 |
|
my $delta="/var/tmp/"; |
8 |
|
|
9 |
system "$rndc stats"; |
system "$rndc stats"; |
10 |
|
|
14 |
my %forward; |
my %forward; |
15 |
my %reverse; |
my %reverse; |
16 |
|
|
17 |
open(D,$bind9_dump) || die "$bind9_dump: $!"; |
my $tmp=$log; |
18 |
while(<D>) { |
$tmp=~s/\W/_/g; |
19 |
|
$delta.=$tmp.".offset"; |
20 |
|
|
21 |
|
open(DUMP,$log) || die "$log: $!"; |
22 |
|
|
23 |
|
if (-e $delta) { |
24 |
|
open(D,$delta) || die "can't open delta file '$delta' for '$log': $!"; |
25 |
|
my $offset=<D>; |
26 |
|
chomp $offset; |
27 |
|
close(D); |
28 |
|
my $log_size = -s $log; |
29 |
|
if ($offset <= $log_size) { |
30 |
|
seek(DUMP,$offset,0); |
31 |
|
} |
32 |
|
} |
33 |
|
|
34 |
|
while(<DUMP>) { |
35 |
next if /^(---|\+\+\+)/; |
next if /^(---|\+\+\+)/; |
36 |
chomp; |
chomp; |
37 |
my ($what,$nr,$direction) = split(/\s+/,$_,3); |
my ($what,$nr,$direction) = split(/\s+/,$_,3); |
44 |
} |
} |
45 |
|
|
46 |
} |
} |
47 |
|
close(DUMP); |
48 |
|
|
49 |
|
open(D,"> $delta") || die "can't open delta file '$delta' for log '$log': $!"; |
50 |
|
print D tell(DUMP); |
51 |
close(D); |
close(D); |
52 |
|
|
53 |
foreach (@counters) { |
foreach (@counters) { |