#! /usr/bin/perl -w # # Marko Riedel, EDV Neue Arbeit gGmbH, mriedel@neuearbeit.de # # # # use POSIX qw(strtol); my $command_file = '/usr/local/nagios/var/rw/nagios.cmd'; my $hour = (60*60); my $next_day = (24*60*60); my $downtimes = [ { host => 'somehost', service => 'SERVICE', times => [ ["00:00", 9], ["18:00", 6] ] } ]; foreach my $entry (@$downtimes) { my ($secstart, $secend, $cmd, $current); $current = `/bin/date +"%s"`; chomp $current; foreach my $tperiod (@{ $entry->{times} }){ $secstart = strtol(`/bin/date -d "$tperiod->[0]" +"%s"`); $secend = $secstart+$tperiod->[1]*$hour; $secstart += $next_day; $secend += $next_day; $cmd = "[$current] SCHEDULE_SVC_DOWNTIME;"; $cmd .= "$entry->{host};$entry->{service};"; $cmd .= "$secstart;$secend;"; $cmd .= "1;0;$0;automatically scheduled;\n"; print STDERR $cmd; system "echo \"$cmd\" >> $command_file"; } }