4 # The following exit codes are defined and MUST BE CONSISTENT with the
5 # error codes the library uses:
6 $MR_DBMS_ERR = 47836421;
7 $MR_OCONFIG = 47836460;
9 $outdir = '/moira/dcm/nagios-wsh';
13 $dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
16 $sth0 = $dbh->prepare("SELECT l.list_id, m.name " .
17 "FROM list l, machine m, serverhosts sh " .
18 "WHERE sh.value3 = l.name AND sh.service = " .
19 "'NAGIOS-WSH' AND m.mach_id = sh.mach_id")
23 while (($root_list_id, $hostname) = $sth0->fetchrow_array) {
25 open(OUT, ">$outdir/$hostname") || exit $MR_OCONFIG;
26 print OUT "# This file is automatically generated by Moira. Do not edit.\n";
27 $sth = $dbh->prepare("SELECT m.name, i.tag FROM machine m, imembers i " .
28 "WHERE i.list_id = " . $dbh->quote($root_list_id) .
29 "AND i.member_type = 'MACHINE' AND m.status = 1 " .
30 "AND i.member_id = m.mach_id AND i.direct = 1 ORDER BY m.name")
34 while (($name, $tag) = $sth->fetchrow_array) {
35 next if $name eq "[NONE]";
37 push(@allwshhosts, $name);
52 define hostescalation{
54 contact_groups wsh,wsh-mail
57 notification_interval 0
60 define serviceescalation{
62 contact_groups wsh,wsh-mail
63 service_description PING
66 notification_interval 0
72 $sth1 = $dbh->prepare("SELECT s.string " .
74 "WHERE s.string_id = " . $tag)
77 my @tags = split /\s+/,$sth1->fetchrow_array;
83 if ($service =~ /^(FTP|NFS|HTTP|HTTPS|SMTP|SSHD|TELNET|TNS)$/i) {
84 my $ucservice = $service;
85 $ucservice =~ tr/a-z/A-Z/;
86 my $lcservice = $service;
87 $lcservice =~ tr/A-Z/a-z/;
88 $services{$ucservice}++;
93 use $lcservice-service
96 define serviceescalation{
98 contact_groups wsh,wsh-mail
99 service_description $ucservice
102 notification_interval 0
106 } elsif ($service =~ /^HTTPS-CERT$/i) {
107 $services{'HTTPS-CERT'}++;
111 contact_groups wsh-mail
112 use https-cert-service
116 } else { # Hopefully this is a URL of some sort
120 if ($service =~ /^([a-z]*):\/\/([^\/]*)(.*)$/ ) {
124 $protocol =~ tr/a-z/A-Z/;
125 $server =~ tr/A-Z/a-z/;
127 if ($protocol =~ /^HTTP(|S)$/) {
128 $path = "/" if ($path eq "");
129 if ($server eq $name && $path eq "/") { # this is a simple service
130 push @tags,$protocol;
132 # prep a bunch of variables for the text we'll spit out
133 my $description = "$protocol-$server-$path";
134 $description =~ s/-\//-/g;
135 $description =~ s/\/-/-/g;
136 $description =~ s/\//-/g;
137 $description =~ s/-$//g;
138 $description =~ tr/A-Z/a-z/;
139 my $ucdescription = $description;
140 $ucdescription =~ tr/a-z/A-Z/;
142 if ($protocol eq "HTTPS") {
143 $SSL = "--SSL -k /var/nagios/etc/cert.pem";
147 command_name check_$name-$description
148 command_line \$USER1\$/check_http -H $server $SSL -u $path
153 name $description-service
154 service_description $ucdescription
156 check_command check_$name-$description
160 define serviceescalation{
162 contact_groups wsh,wsh-mail
163 service_description $ucdescription
166 notification_interval 0
170 if ($services{$protocol}) {
172 define servicedependency{
173 dependent_host_name $name
174 dependent_service_description $ucdescription
176 service_description $protocol
177 execution_failure_criteria n
178 notification_failure_criteria w,u,c
184 printf STDERR "Machine %s has unknown service %s; ignoring\n", $name, $service;
186 } # if SERVICE else URL
188 if ($services{'HTTPS'} && $services{'HTTPS-CERT'}) {
190 define servicedependency{
191 dependent_host_name $name
192 dependent_service_description HTTPS-CERT
194 service_description HTTPS
195 execution_failure_criteria n
196 notification_failure_criteria w,u,c
202 } # while $sth->fetchrow_array
206 hostgroup_name wsh-hosts
211 print OUT "\tmembers\t\t\t";
214 foreach $host (@allwshhosts) {
215 print OUT "$maybecomma$host";
219 print OUT "\n\t}\n\n";