diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/icli | 44 |
1 files changed, 42 insertions, 2 deletions
@@ -4,6 +4,7 @@ use strict; use warnings; use 5.010; +use Date::Format; use Getopt::Long qw/:config bundling/; use Term::ANSIColor; @@ -38,6 +39,11 @@ sub with_colour { } } +sub pretty_date { + my ($unix) = @_; + return time2str('%Y-%m-%d %H:%M:%S', $unix); +} + sub read_objects_line { my ($line, $ref) = @_; @@ -118,6 +124,37 @@ sub host_state { } } +sub display_queue { + my @queue = map { $_->[0] } + sort { $a->[1] <=> $b->[1] } + map { [$_, $_->{next_check}] } + (values %{$data->{hosts}}, + map { @{$_} } values %{$data->{services}}); + + printf( + "%-25.25s %-20.20s %-19s %-19s\n", + 'Host', + 'Service', + 'Last Check', + 'Next Check', + ); + + for my $e (@queue) { + + if ($e->{next_check} == 0) { + next; + } + + printf( + "%-25.25s %-20.20s %-19s %-19s\n", + $e->{host_name}, + $e->{service_description} // q{}, + pretty_date($e->{last_check}), + pretty_date($e->{next_check}), + ); + } +} + sub display_service { my ($s) = @_; printf( @@ -225,6 +262,9 @@ elsif ($list_type eq 'h') { display_host($host, 1); } } +elsif ($list_type eq 'q') { + display_queue(); +} else { die("See perldoc -F $0\n"); } @@ -270,11 +310,11 @@ Show details for all hosts in I<hostgroup> Only show I<host>'s services -=item B<-l>|B<--list> B<hosts>|B<services> +=item B<-l>|B<--list> B<hosts>|B<services>|B<queue> List either services (the default) or hosts. Note that only the first character of the argument is checked, so C<< icli --lh >> and C<< icli -ls >> are also fine. +-lh >>, C<< icli -ls >> etc. are also fine. =item B<-s>|B<--short> |