here's the main chunk of code from the existing script, which is doing the job just fine
while (my($gid,$gname) = each %groups) {
if ($debug >= 3) { writeLog("I","Check notification group $gna
+me");}
##Create an ARRAY with each filter for each group
my @gArray = getFilterGroups($gid);
foreach my $fGroup (@gArray) {
my %fHash = getFilters($fGroup);
my $fullMatch = getEntries($fGroup);
if ($debug >=3) { writeLog("I","The filter group ($fGroup)
+ has $fullMatch entries");}
my $count = 0;
while (my($slot,$value) = each %fHash) {
if ($debug >=3) { writeLog("I","Checking event against
+ FILTER:$slot=>$value");}
my $result = checkEvent($slot,$value);
if ($result == 1) {
if ($debug >=3) {writeLog("I","Tivoli slot and fil
+ter slot information match");}
$count++;
if ($debug >=4) {writeLog("I","Count is at $count
+--> fullMatch is $fullMatch")};
if ($count == $fullMatch) {
my @memberList = getMembers($gid);
foreach my $member(@memberList) {
if ($debug >=2) {writeLog("I","Generating
+automated notification to $member");}
#notifyLog($member);
notify($member);
}
if ($debug >= 1) { writeLog("I","inserting int
+o db log");}
dblog($gid);
$count = 0;
}
}
}
}
}
It simply loops through all the groups present in the DB and grabs the filters. It considers a match to be when all the slot/value combination's in the filter DB match with those received from the event.
Events are received from a BMC product called Impact. It has a built-in rules engine and when certain criteria are satisfied we call the PERL script.
Details of the events are passed to the script as environment variables, here's a code snippet,
my $thost = $ENV{mc_host};
my $source = $ENV{source};
my $server_hndl = $ENV{server_handle};
|