Thanks everyone for the great ideas. After I implemented the
solution(s) you guys proposed I stumbled upon Nagios::Object
(http://search.cpan.org/~duncs/Nagios-Object-0.21.16/). I did learn a
few things from your ideas though so I am grateful none the less!
I recommend anyone working with Nagios check out the modules above as
they seem to be fairly powerful!
Thanks again for your replies,
Brandon
On 02/02/2012 06:31 AM, Rob Dixon wrote:
On 31/01/2012 22:43, Brandon Phelps wrote:
Hello all,
I am attempting to parse a Nagios status.dat file and am curious about
what the most efficient way to do this would be. I'm sure I could come
up with something but it would be very convoluted and I'm sure there is
a better way. Below is a sample of the file. The sections I am
interested in are the "hoststatus" sections. Any other section I want to
simply ignore. Within the hoststatus sections are a few lines I am
looking for: host_name=<whatever> and current_state=<whatever>, I'd
simply like to perform a task based on these "whatever"'s. For example,
output lines such as:
some_host:1
another_host:0
Where some_host and another_host are host_name's from the file, and 1
and 0 are current_state's for the corresponding host.
Any pointers or examples would be appreciated!
Here is a sample of the file:
[snip data]
Thanks,
Brandon
Hi Brandon
The program below seems to do what you require. Hope it helps.
Rob
use strict;
use warnings;
open my $fh, '<', 'status.dat' or die $!;
my $hoststatus;
my %data;
while (<$fh>) {
$hoststatus++ if /\bhoststatus\s*\{/;
next unless $hoststatus;
if (/\}/) {
print "$data{host_name}:$data{current_state}\n";
%data = ();
$hoststatus = 0;
}
elsif (/(\w+)=(.*\S)/) {
$data{$1} = $2;
}
}
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/