#!/usr/bin/perl use Pod::Usage; use Monitoring::Config; if(!defined $ARGV[0]) { pod2usage( { -verbose => 2, -exit => 3, -message => "\nERROR: missing argument: object.cache\n\n" } ); } if(!-f $ARGV[0]) { pod2usage( { -verbose => 2, -exit => 3, -message => "\nERROR: ".$ARGV[0].': '.$!."\n\n" } ); } my $odb = Monitoring::Config->new({ obj_file => $ARGV[0], 'force' => 1 })->init(); my $contacts = $odb->get_objects_by_type('contact'); my $groups = $odb->get_objects_by_type('contactgroup'); my $def = $odb->get_default_keys('contact', { no_alias => 1, sort => 1 }); # convert groups my $groups_by_contact = {}; for my $g (@{$groups}) { my $name = $g->{'conf'}->{'contactgroup_name'}; for my $m (@{$g->{'conf'}->{'members'}}) { $groups_by_contact->{$m}->{$name} = 1; } } # print header print join(';', map(ucfirst, @{$def})), ";Groups\n"; # print data for my $o (@{$contacts}) { for my $attr (@{$def}) { if(!defined $o->{'conf'}->{$attr}) { print ";"; } else { if(ref $o->{'conf'}->{$attr} eq 'ARRAY') { print join(',', @{$o->{'conf'}->{$attr}}), ";"; } else { print $o->{'conf'}->{$attr}, ";"; } } } my $name = $o->{'conf'}->{'contact_name'}; print join(',', keys %{$groups_by_contact->{$name}}); print "\n"; }