With some assumptions:
Code:
#! /usr/bin/env perl
use warnings;
use strict;
my ($Thresholds_f, $Queue) =
('/users/tibprod/scripts/EMS_Queue_List_leaiprod.ls',
'/users/tibprod/scripts/ShowQueues_leaiprod.sh|');
my %Thresholds_h;
open TH, '<', $Thresholds_f or die "$Thresholds_f: $!\n";
while (<TH>) {
tr/"//d;
my @Fields = split /\s{3,}/;
$Thresholds_h{$Fields[0]} = [@Fields[1..4]];
}
close TH;
open QUEUE, $Queue or die "$Queue: $!\n";
while (<QUEUE>) {
next unless /\w+\s+/;
my $Flag = 0;
my @Fields = split /\s+/;
while (my($Key, $Ref) = each %Thresholds_h) {
my @Values = @$Ref;
if ($Fields[0] =~ /^$Key$/) {
if ($Values[0] =~ s/^"*-//) {
if ($Fields[1] < $Values[0]) {
print "\n$Fields[0] ...".
"\n\n\t--> task threshold exceeded: \n\n\tcurrent status: ",
$Fields[1], "\n\tthreshold: -", $Values[0], "\n\n";
defined $Values[2] and print $Values[2], "\n\n";
$Flag++
}
}
elsif ($Fields[1] > $Values[0]) {
printf "\n$Fields[0] ..." unless $Flag;
print "\n\n\t--> task threshold exceeded: \n\n\tcurrent status: ",
$Fields[1], "\n\tthreshold: ", $Values[0], "\n\n";
defined $Values[2] and print $Values[2], "\n\n";
$Flag++
}
if ($Values[1] =~ s/^"*-//) {
if ($Fields[2] < $Values[1]) {
printf "\n$Fields[0] ..." unless $Flag;
print "\n\t--> listeners threshold exceeded: \n\n\tcurrent status: ",
$Fields[2], "\n\tthreshold: -", $Values[1], "\n\n";
defined $Values[3] and print $Values[3], "\n\n";
$Flag++
}
}
elsif ($Fields[2] > $Values[1]) {
printf "\n$Fields[0] ..." unless $Flag;
print "\n\n\t--> listeners threshold exceeded: \n\n\tcurrent status: ",
$Fields[2], "\n\tthreshold: ", $Values[1], "\n\n",
defined $Values[3] and print $Values[3], "\n\n";
}
}
}
}
close QUEUE;