You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rb...@apache.org on 2012/04/12 15:34:17 UTC

svn commit: r1325250 - /httpd/httpd/trunk/support/log_server_status.in

Author: rbowen
Date: Thu Apr 12 13:34:16 2012
New Revision: 1325250

URL: http://svn.apache.org/viewvc?rev=1325250&view=rev
Log:
With further assistance from Daniel Gruno - style changes, removes use
of `hostname`, uses IO::Socket instead of a custom tcp_connect function,
and uses HTTP/1.1.

Modified:
    httpd/httpd/trunk/support/log_server_status.in

Modified: httpd/httpd/trunk/support/log_server_status.in
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/support/log_server_status.in?rev=1325250&r1=1325249&r2=1325250&view=diff
==============================================================================
--- httpd/httpd/trunk/support/log_server_status.in (original)
+++ httpd/httpd/trunk/support/log_server_status.in Thu Apr 12 13:34:16 2012
@@ -25,7 +25,7 @@
 # it to a file.  Make sure the directory $wherelog is writable by the
 # user who runs this script.
 #
-use Socket;
+use IO::Socket;
 use strict;
 use warnings;
 
@@ -34,55 +34,43 @@ my $server   = "localhost";        # Nam
 my $port     = "80";               # Port on server
 my $request = "/server-status/?auto";    # Request to send
 
-sub tcp_connect
-{
-    my ( $host, $port ) = @_;
-    my $sockaddr = 'S n a4 x8';
-    chop( my $hostname = `hostname` );
-    $port = ( getservbyname( $port, 'tcp' ) )[2] unless $port =~ /^\d+$/;
-    my $me = pack( $sockaddr, &AF_INET, 0, ( gethostbyname($hostname) )[4] );
-    my $them = pack( $sockaddr, &AF_INET, $port, ( gethostbyname($host) )[4] );
-    socket( S, &PF_INET, &SOCK_STREAM, ( getprotobyname('tcp') )[2] )
-      || die "socket: $!";
-    bind( S, $me ) || return "bind: $!";
-    connect( S, $them ) || return "connect: $!";
-    select(S);
-    $| = 1;
-    select(STDOUT);
-    return "";
-}
-
-### Main
+my @ltime = localtime(time);
 
-{
-    my @ltime = localtime(time);
-    
-    my $day =
-        $ltime[5] + 1900
-      . sprintf( "%02d", $ltime[4] + 1 ) 
-      . sprintf( "%02d", $ltime[3] );
-
-    my $time =
-        sprintf( "%02d", $ltime[2] )
-      . sprintf( "%02d", $ltime[1] )
-      . sprintf( "%02d", $ltime[0] );
-
-    my $res = &tcp_connect( $server, $port );
-    open( OUT, ">>$wherelog$day" );
-
-    if ($res) {
-        print OUT "$time:-1:-1:-1:-1:$res\n";
-        exit 1;
-    }
-    print S "GET $request\n";
-    my ( $requests, $idle, $number, $cpu );
-    while (<S>) {
-        $requests = $1 if (m|^BusyWorkers:\ (\S+)|);
-        $idle     = $1 if (m|^IdleWorkers:\ (\S+)|);
-        $number   = $1 if (m|sses:\ (\S+)|);
-        $cpu      = $1 if (m|^CPULoad:\ (\S+)|);
-    }
-    print OUT "$time:$requests:$idle:$number:$cpu\n";
+my $day =
+    $ltime[5] + 1900
+  . sprintf( "%02d", $ltime[4] + 1 )
+  . sprintf( "%02d", $ltime[3] );
+
+my $time =
+    sprintf( "%02d", $ltime[2] )
+  . sprintf( "%02d", $ltime[1] )
+  . sprintf( "%02d", $ltime[0] );
+
+open(OUT,">>$wherelog$day");
+
+my $socket = new IO::Socket::INET(
+    PeerAddr => $server,
+    PeerPort => $port,
+    Proto    => "tcp",
+    Type     => SOCK_STREAM
+  )
+  or do {
+    print OUT "$time:-1:-1:-1:-1:$@\n";
+    close OUT;
+    die "Couldn't connect to $server:$port : $@\n";
+  };
+$| = 1;
+
+print $socket
+  "GET $request HTTP/1.1\r\nHost: $server\r\nConnection: close\r\n\r\n\r\n";
+
+my ( $requests, $idle, $number, $cpu );
+while (<$socket>) {
+    $requests = $1 if (m|^BusyWorkers:\ (\S+)|);
+    $idle     = $1 if (m|^IdleWorkers:\ (\S+)|);
+    $number   = $1 if (m|sses:\ (\S+)|);
+    $cpu      = $1 if (m|^CPULoad:\ (\S+)|);
 }
-
+print OUT "$time:$requests:$idle:$number:$cpu\n";
+close OUT;