mrtg/webstat.pl

Sat, 03 Oct 2009 16:18:52 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Oct 2009 16:18:52 +0200
changeset 220
a6cd892638c1
parent 135
cd68ee26852b
child 737
b3e405e9af87
permissions
-rw-r--r--

Update version, adjust corresponding buildconf, and correct logic.
1: Make minor corrections and improvements to scripts patch logic.
2: Upgrade to most recent stable release version 3.0.2.
3: Force selection of a single db backend, as multiple ones never
were supported (changing 'with_db<end>' identifiers accordingly.)
4: Unfortunately add gawk requirement although only partly needed.
5: Add openssl::with_threads requirement to solve strange and hard
to debug problems on Solaris leading to connection failures:

'host-dir JobId 0: Error: openssl.c:86 Connect failure: ERR=error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number'

and

'host-dir JobId 40: Fatal error: TLS negotiation failed with FD at "back1.host.com:9102"'

     1 #! @l_prefix@/bin/perl
     2 ##
     3 ##  webstats.pl: return HTTP server hits and bytes
     4 ##
     5 ##  Configure Apache HTTP server like so:
     6 ##    <Location /server-status>
     7 ##        SetHandler server-status
     8 ##        Order allow,deny
     9 ##        Allow from localhost
    10 ##    </Location>
    11 ##    ExtendedStatus On
    12 ##
    14 @res = `@l_prefix@/bin/lynx -dump http://localhost/server-status`;
    16 foreach $res (@res) {
    17     if ($res =~ /Server uptime: (.*)$/) {
    18         $up = $1;last
    19     }
    20     else {
    21         next
    22     }
    24     if ($res =~ /Server at/) {
    25         $server = $res;
    26         last
    27     }
    28     else {
    29         next
    30     }
    31 }
    33 @res = `@l_prefix@/bin/lynx -dump http://localhost/server-status?auto`;
    35 foreach $res (@res) {
    36     if ($res =~ /Total Accesses: (\d+)/) {
    37         $d1 = $1;
    38         next
    39     }
    41     if ($res =~ /Total kBytes: (\d+)/) {
    42         $d2 = $1 * 1024;
    43         next
    44     }
    45 }
    47 $d1 = int($d1);
    48 $d2 = int($d2);
    50 if ($ARGV[0] eq "hits") {
    51     print "$d1\n";
    52     print "$d1\n";
    53 } elsif ($ARGV[0] eq "bytes") {
    54     print "$d2\n";
    55     print "$d2\n";
    56 }
    58 print "$up\n";
    59 print "$server";
    60 print "$null\n";
    61 print "$null\n";

mercurial