#!/moira/bin/perl -Tw # $Id$ # The following exit codes are defined and MUST BE CONSISTENT with the # error codes the library uses: $MR_DBMS_ERR = 47836421; $MR_OCONFIG = 47836460; $outfile = '/moira/dcm/nagios-cluster.out'; use DBI; umask 022; open(OUT, ">$outfile") || exit $MR_OCONFIG; print OUT "# This File is automatically generated by Moira. Do not edit.\n\n"; $dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira") || exit $MR_DBMS_ERR; $sth1 = $dbh->prepare("SELECT m.name FROM machine m, clusters c, mcmap p " . "WHERE m.status=1 AND c.name='cluster' AND " . "(m.mach_id=p.mach_id AND p.clu_id=c.clu_id)") || exit $MR_DBMS_ERR; $sth1->execute || exit $MR_DBMS_ERR; my %clusters; while (($name) = $sth1->fetchrow_array) { next if $name eq "[NONE]"; $name = lc($name); my $cluster = $name; $cluster =~ s/\..*$//; $cluster =~ s/\-[^\-]*$//; # print "$name\t$cluster\n"; push @$cluster, $name; $clusters{$cluster}++; print OUT <<"END"; define host{ host_name $name alias $name address $name contact_groups noone use generic-host } define service{ host_name $name contact_groups noone use ping-service } define service{ host_name $name contact_groups noone use no-ssh-service } define service{ host_name $name contact_groups noone use no-telnet-service } define service{ host_name $name contact_groups noone use no-ftp-service } define service{ host_name $name contact_groups noone use public-service } END } foreach $key (sort (keys %clusters)) { print OUT <prepare("SELECT UNIQUE m.name FROM machine m, printers p " . "WHERE (p.type = 'DORM' OR p.type ='CLUSTER') " . "AND p.mach_id = m.mach_id AND m.status=1") || exit $MR_DBMS_ERR; $sth0->execute || exit $MR_DBMS_ERR; while (($name) = $sth0->fetchrow_array) { next if $name eq "[NONE]"; $name = lc($name); push(@allprinters, $name); print OUT <<"END"; define host{ host_name $name alias $name address $name contact_groups noone use generic-host } define service{ host_name $name contact_groups noone use ping-service } define service{ host_name $name contact_groups noone use hpjd-service } END } print OUT <disconnect; exit 0;