- my @livehosts;
- foreach my $host ("sarah", "homer", "lisa", "mona") {
- push @livehosts, $host if(ping($host));
+ my (@check) = ("mona", "lisa", "homer", "sarah");
+ my (@uphosts, @livehosts, $host, $hostlist);
+ if(($_[0] || 0) == 1) {
+ $hostlist=$state{'hosts'};
+ $hostlist=~s/0\S* ?//g;
+ @livehosts = split / /, $hostlist;
+ } else {
+ $hostlist="";
+ foreach $host (@check) {
+ push @uphosts, $host if(ping($host));
+ }
+ foreach $host (@uphosts) {
+ if(is_alive($host)) {
+ push @livehosts,$host;
+ $hostlist="$host $hostlist";
+ } else {
+ $hostlist="0$host $hostlist";
+ }
+ }
+ $hostlist=~s/ $//;
+ $state{'hosts'}=$hostlist;
+ }
+ if(scalar @livehosts == 0) {
+ $state{'alive'} = '';
+ } elsif(scalar @livehosts > 1 && $state{'chat'}) {
+ foreach $host (@livehosts) {
+ if ($host eq $state{'chat'}) {
+ $state{'alive'} = $host;
+ return;
+ }
+ }