Skip to content
Snippets Groups Projects
getStatus.pl 5.25 KiB
Newer Older
Tomáš Plesník's avatar
Tomáš Plesník committed
#!/usr/bin/perl -w
#
# getStatus.pl
#
Tomáš Plesník's avatar
Tomáš Plesník committed
# Copyright (C) 2011-2012 Cesnet z.s.p.o
Tomáš Plesník's avatar
Tomáš Plesník committed
# Author(s): 	Tomas PLESNIK 	<plesnik@ics.muni.cz>
#               Jan SOUKAL      <soukal@ics.muni.cz>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
# 3. Neither the name of the Cesnet z.s.p.o nor the names of its
#    contributors may be used to endorse or promote products derived from
#    this software without specific prior written permission.
#
# This software is provided ``as is'', and any express or implied
# warranties, including, but not limited to, the implied warranties of
# merchantability and fitness for a particular purpose are disclaimed.
# In no event shall the Cesnet z.s.p.o or contributors be liable for
Tomáš Plesník's avatar
Tomáš Plesník committed
# any direct, indirect, incidental, special, exemplary, or consequential
# damages (including, but not limited to, procurement of substitute
# goods or services; loss of use, data, or profits; or business
# interruption) however caused and on any theory of liability, whether
# in contract, strict liability, or tort (including negligence or
# otherwise) arising in any way out of the use of this software, even
# if advised of the possibility of such damage.

use strict;
use Getopt::Std;
use File::Basename;

Tomáš Plesník's avatar
Tomáš Plesník committed
my $warden_path = '/opt/warden-server';
require $warden_path . '/lib/WardenStatus.pm';
my $filename = basename($0);

#-------------------------------------------------------------------------------
#                               Functions
#-------------------------------------------------------------------------------
sub usage {
  print "Usage: $filename [without parameters]\n";
  exit 1;
}


#-------------------------------------------------------------------------------
# errMsg - print error message and die
#-------------------------------------------------------------------------------
sub errMsg
{
  my $msg = shift;
  $msg = trim($msg);
  print $msg . "\n";
  exit 1;
} # End of errMsg


#-------------------------------------------------------------------------------
# trim - remove whitespace from the start and end of the string
#-------------------------------------------------------------------------------
sub trim
{
  my $string = shift;
  $string =~ s/^\s+//;
  $string =~ s/\s+$//;
  return $string;
} # End of trim


#-------------------------------------------------------------------------------
#                               MAIN
#-------------------------------------------------------------------------------
our ($opt_h);

die usage unless getopts("h");
my $help = $opt_h;

# catch help param
if ($help) {
  usage;
}

# superuser controle
my $UID = $<;
if ($UID != 0) {
  die errMsg("You must be root for running this script!")
}

my @status = WardenStatus::getStatus($warden_path);

# take and remove first element of array @status and save it into $server_status_ref
Tomáš Plesník's avatar
Tomáš Plesník committed
my $server_status_ref = shift(@status);
my @server_status = @$server_status_ref;

print "Warden server variables:\n";
print "========================\n";
print "SERVER_VERSION:\t\t$server_status[0]\n";
#print "ADDRESS:\t\t$server_status[1]\n";
#print "PORT:\t\t\t$server_status[2]\n";
print "LOGDIR:\t\t\t$server_status[3]\n";
#print "PIDDIR:\t\t\t$server_status[4]\n";
print "VARDIR:\t\t\t$server_status[5]\n";
#print "SSL_KEY_FILE:\t\t$server_status[6]\n";
#print "SSL_CERT_FILE:\t\t$server_status[7]\n";
#print "SSLCA_FILE:\t\t$server_status[8]\n";
print "SYSLOG_FACILITY:\t$server_status[9]\n";
print "\n";

print "Warden server status:\n";
print "=====================\n";
print "Database size:\t\t\t$server_status[10]\n";
print "Count of saved events:\t\t$server_status[11]\n";
print "Last ID in events table:\t$server_status[12]\n";
print "Time of first inserted event:\t$server_status[13] (UTC)\n";
print "Time of latest inserted event:\t$server_status[14] (UTC)\n";
print "Count of registered clients:\t$server_status[15]\n";
Tomáš Plesník's avatar
Tomáš Plesník committed
print "\n";

# check if sum of registered client isn't 0
if ($server_status[15] != 0) {
Tomáš Plesník's avatar
Tomáš Plesník committed
  print "Statistics of registered senders:\n";
  print "+-----------------------------------------------------------------------------------------------------------+\n";
  print "| Client ID  | Hostname                       | Service              | Stored events | Last insertion (UTC) |\n";
  print "+-----------------------------------------------------------------------------------------------------------+\n";
  foreach my $client_status_ref (@status){
    my @client_status = @$client_status_ref;
    printf("| %-10s ", $client_status[0]);
    printf("| %-30s ", $client_status[1]);
    printf("| %-20s ", $client_status[2]);
    printf("| %-13s ", $client_status[3]);
    printf("| %-20s |\n", $client_status[4]);
  }
  print "+-----------------------------------------------------------------------------------------------------------+\n";
  print "\n";
}
Tomáš Plesník's avatar
Tomáš Plesník committed
print "Current server status in:\t" . scalar localtime(time) . "\n";

exit 0;